Dmitry Soshnikov

All Photos Twitter.com
Engineers understand this clearly - want to cover multiple CS concepts and data structures at once? - build a compiler or a virtual machine. People love writing VMs in my courses, and I glad to see more feedback coming like this. udemy.com/course/virtual…
⭐️ All courses in one bundle! 2nd Edition of the "Programming Languages: Ultimate" dmitrysoshnikov.education/p/programming-…
◉ [Building a Typechecker from scratch] dmitrysoshnikov.com/courses/typech… Practical approach to building a static typechecker for a programming language. Available on [DS Education]
(or just use a good linter!)
[Did you know? / Bad tips] Forget putting break after each case? – put it at the beginning! function get(v) { let r; switch (v) { default: r = 0; break; case 1: r = 1; break; case 2: r = 2; } return r; } get(2); (yeah, default can go first!)
⭐️ [Compiler Engineer Path] I'm often asked in which order to take my courses on building programming languages. Here's the "Compiler Engineer Path" small note, which talks about the recommended order and course specifics. dmitrysoshnikov.com/courses/compil…
Building a Virtual Machine [5/29]: Math binary operations youtube.com/watch?v=dNlaq4… In this lecture: - Binary instructions - Math operators - Generic binary macro - Introduction to LLDB - Step debugging - Stack introspection - Complex operation - FILO/LIFO stack specifics
Eva VM [4/29]: Basic numbers: introduction to Stack youtube.com/watch?v=N8ypFL…
The second edition of React: Up and Running is done, yey! It's in the hands of O'Reilly's production team now and hopefully out by Christmas. I swear it's not timing of the market, just a lot of procrastination on the writer's part :) amazon.com/dp/1492051462/
Retweeted by Dmitry Soshnikov
Coming soon: compiling branch-expression.
How programming languages work under the hood? 🤔 Virtual Machines course syllabus is defined! �youtube.com/watch?v=7pLCpN…4#DS_EducationoHQ
How about v.index_of(s) for arrays and vectors? This is too verbose: auto it = std::find(v.begin(), v.end(), s); return it != v.end() ? (it - v.begin()) : -1;
Nightmare material - use an Abstract Syntax Tree to analyze regex expressions. It is actually not that complicated! RegExp Tree: a regular expressions processor by @DmitrySoshnikov link.medium.com/0Ltrw6i57hb
Retweeted by Dmitry Soshnikov
How about this, #JavaScript: Reflect.hasOwn = (o, p) => Object.prototype.hasOwnProperty.call(o, p); Reflect.hasOwn({x: 1}, 'x'); // true twitter.com/DmitrySoshniko…
#JavaScript tricks you again 😉 const o = {x: 1}; Reflect.has(o, 'x'); // true Reflect.hasOwnProperty(o, 'x'); // false
Found this fantastic group of videos by @DmitrySoshnikov about memory management and garbage collection: youtube.com/playlist?list=…
Retweeted by Dmitry Soshnikov
Who's doing ES spec'ing these days? @mathias maybe you can route to correct POCs? The group name "duplicates" in regexp have valid use case.
Why ECMAScript spec chose checking agains duplicate group names? The use-case with alternative makes perfect sense: /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})|(?<month>\d{2})\/(?<day>\d{2})\/(?<year>\d{4})/ github.com/DmitrySoshniko…
Initializer in VariableDeclaration is exactly the AssignmentExpression, but not the basic Expression, since the basic expression derives sequence, which cannot be directly assigned let x = 1; // works let y = z = 2; // works let q = 1, 2; // doesn't work let g = (1, 2); // works
[Syntax] tool - the language-agnostic parser generator - now supports modern C++ as a target language! github.com/DmitrySoshniko… #cpp #parsers #generator @CppStack @cppcast
👉 Building a Recursive descent parser in#JavaScriptt. Lecture 2: Numbers and Strings ✓ Tokenizer module (Lexical analysis) ✓ Number and String tokens ✓ Program AST node ✓ Lookahead ✓ Numeric literals ✓ String literals ✓ Finite state machine youtube.com/watch?v=0ZDPvd…j8
Differences between AOT, JIT and Transpiler and whether we have "compiled" and "interpreted" languages: youtube.com/watch?v=r1S9N4…
👉 Pure practice: Building a Parser from scratch Lecture 1: Tokenizer | Parser Manual recursive-descent implementation with a syntax similar to#JavaScriptt youtube.com/watch?v=4m7ubr…Qd
Digging into #JavaScript syntactic grammar just realized this is a "valid" JS program: ""(); as well as this one: 10(); and this: null(); false(); .0(); It is an error due to not being callable, but perfectly parsable. The CallExpression node.
I've been learning about building interpreters and compilers. @DmitrySoshnikov's quick courses on @udemy are incredible if you want to get started without any prior knowledge.
Retweeted by Dmitry Soshnikov
i had the priviledge of taking 1-hour deep dive #js class by @DmitrySoshnikov and it was the best js lecture i've ever seen!!! such deep content in so little time.. i always love to hear about how languages work under the hood.. wh…lnkd.in/d5xm7yS lnkd.in/dTKu-27
Retweeted by Dmitry Soshnikov
👉 [lex-js]: create custom Tokenizers from RegExp specs in#JavaScriptt github.com/DmitrySoshniko…hx
Once you're done with the actual runtime and fully implemented the "language", _now_ it is time to design a good syntax and shift to parsers topic, bringing "ergonomics" to your language.
Tip: in learning "compilers" always start from implementing an AST-interpreter first. It will allow quickly catching the essence and semantics of the language. Classic mistake of the classic "compiler books" is they start from lexers and parsers going deep into theoretical TOC.
It was the 1983 and this is the Hewlett-Packard HP-150 Touchscreen. It was one of the first popular market touchscreen computers. It was based on the Intel 8088 and came a year before the Macintosh. Steve Jobs was intrigued by the idea and asked the Macintosh team about it.
Retweeted by Dmitry Soshnikov
[DS #Education] school has the new course on parsers now! 👩‍💻 dmitrysoshnikov.educationeKrj
Which class would you be the most interested in? - Writing a Recursive descent parser for a programming language from scratch - Building a Virtual Machine (low-level interpreter) - Building a JIT-compiler - Building a programing language with LLVM - Building a Transpiler
Parsers comparison by expressiveness of grammars, and how complex languages they may handle. Despite CLR(1) covering the widest range of grammars, it's actually less practical than LALR(1) and even SLR(1). #Parsers #Compiler_design
[Eva programming language] 👩‍💻 Source codegithub.com/DmitrySoshniko…VO 👉 Course infdmitrysoshnikov.com/courses/essent…qc2
Pretty good analysis of JavaScript closures. twitter.com/ziizium/status…
Twiends™ uses the Twitter™ API, displays it's logo & trademarks, and is not endorsed or certified by them. These items remain the property of Twitter. We do not sell followers, we only provide display advertising. Bots & fake accounts are not permitted on twiends. © 2009
Grow Your Twitter Free
Want To Grow Your Twitter?
We help other people find and follow you on Twitter.
Key Info:
Started in 2009
Over 6 million signups
Country targeting provided
We never auto tweet to your timeline
We never auto follow others
We actively moderate our community
Please Share
Please upgrade your browser  chrome