About

Hi, I’m Dmitry — an engineering manager interested in learning and education. I blog on topics of programming languages, compilers, parsers and advanced JavaScript.

You can find my classes on dmitrysoshnikov.educaton school which I run and also on Udemy platform.

For the latest updates you can follow me on Twitter @DmitrySoshnikov, and can also explore my side projects on Github.

If you find this content helpful and useful, you may also [ support ] the project.

Feel free to message me in case of any questions on classes and don’t hesitate posting questions in comments on blog posts.

Have fun with studying compilers and deep JavaScript!

– Dmitry Soshnikov

Write a Comment

Comment

69 Comments

  1. Hi @Ramaj, for a DSL I recommend Building a Parser from scratch and Building an Interpreter from scratch. If you’d like to make an automated parser instead, the Parsing Algorithms also would work.

  2. Hi, Dmitry, I have bought all of your courses on Udemy, I posted a comment earlier. What order would be the best to complete them all? Is it preferred to have prior Assembly knowledge at all before starting any of them? (Like some concepts etc.)

  3. @Max — congrats! I would recommend starting from the “Building an Interpreter from scratch” (understanding runtime first), then going to “Building a Parser from scratch” to make your language look nice with syntax. No Assembly knowledge is required here since these two are high-level at AST. After that going to lower-level, “Building a Virtual Machine from scratch” (in-progress and is coming soon, understanding bytecode/Assembly would be a benefit here). Then if you’d like to go to deeper theory, then “Parsing Algorithms”, “Garbage Collection Algorithms”, and “Automata Theory”. Good luck in building programming languages.

  4. Hi Dmitry,
    I see you have posted a few videos regarding “Build a virtual machine from scratch” on youtube. Looks like it might a playlist of about 29 videos.
    I have waited patiently(almost a year now) for this series. When “exactly” will this course be available on udemy.

  5. Hi Shreeya, thanks for the interest. Currently I target the release closer to the end of year, however it might come earlier.

  6. Hi Sir Dmitri,

    I created content about microblog, may I raise your content as my microblog?
    I usually simplify the language so that it is easier for people to understand why we have to learn it. I ask permission to promote the material you sell on my Instagram feed, would you like it?

  7. Greate courses so far. what is your plan on next courses? any chance sthg like
    type inference, type checking with advanced polymorphism in it?

  8. Hi cedu, thanks for the feedback, glad you like the courses. Yes, type systems might be next, will definitely consider.

  9. Working through your courses, you are often skipping some things. In particular right now I am struggling with the Virtual Machine course where you never initialize the STACK POINTER yet push and pop things into it and magically do not get a segfault. I, of course, *do* get a segmentation fault. I think it would be helpful if you would post, somewhere, working code for situations like this. I have flipped now through video of lecture 4 like 5 times and NOWHERE do you initialize the thing yet magically your code works, so obviously you DID initialize it when you actually did the exercise. Since it is not in the video anywhere though, the person attempting to follow along is totally lost. This is one example, there are many others I keep coming across when I did the interpreter class.

  10. @David C — thanks for the feedback, the example with the uninitialized stack pointer is very valid, and should be addressed in the following up videos and also in the comments to the video. I have updated the source code skeleton to include this parts. Please let me know if you see other cases to be updated.

  11. Just finished the byte code interpreter class (virtual machine), I am struggling with my system with having some segmentation faults in some scenarios that I haven’t been able to figure out – I believe not pushing something on the stack at some point because I can find cases where I get at end of execution a pop error about empty stack. That said, I learned a lot. I wish there was some email or something where a student could write to ask questions or point out situations where something is maybe missing, rather than comments here being the only communication option. Also, I am wondering – do you have plans to do the JIT compiler class you mentioned at the end of the video?

  12. @David Clifton, thanks for the feedback, David – yes, lower-level VMs, especially with specifics of C++ may have harder to debug issues, and segfaults may happen. Usually recommendation is to go over the debugging via lldb and similar tools, and trying executing step-by-step each line, starting from the very beginning in main function. You can also contact me via email, and yes – the JIT compiler may be following soon after the class on a static Typechecker.

  13. “You can also contact me via email..” – but I don’t see your email address published anywhere. Maybe you could put it inside the lectures for the paid course in notes or similar so you don’t have to post on public internet.

  14. @David Clifton, it’s my name at gmail.com, aslo Twitter DM or messaging system on Udemy/Teachable should work.

  15. Hi your courses are amazing thanks a lot! The animation are neat (especially the ones in the “Automata Theory” course”) which software are you using? After Effects?

  16. @Yannick – thanks for the feedback! Yes, this is a combination of the Good Notes, After Effects, live editing, etc.

  17. Hi Dmitry,
    I enrolled in the entire programming language bundle and absolutely loved it! You are a genius who can explain even the most complicated concepts in the most elegant way!!!
    Could you pls let me know when the JIT compiler and LLVM course will be released? Can’t wait for those two courses!!

    I’m interested in further research into languages and would like to learn more about enabling concurrency and parallelism. Want to know deeply why Python is stuck with a GIL but JVM/CLR have full concurrency?

    My goal is to develop an easy to use toy language for high performance computing using parallelism (threads, actors and CSP)

    Thank you for everything you’re doing for us!!

    Regards,
    Vamsi

  18. Hi Vamsi – thanks for your feedback, glad you liked the courses, and glad to see PL enthusiasts as yourself interested in deeper topics. Yes, there might be a course on concurrency and parallelism in general (processes, threads, green processes, shared memory, locks, message passing, etc) – as all these are usually parts of a general purpose PLs. The next course though should be on Static Typechecker, followed by JIT module for the EvaVM.