6,383 reputation
21125
bio website
location
age
visits member for 2 years, 5 months
seen 20 mins ago
stats profile views 1,925

Things I like: C++11, Lisp macros, Verilog, JavaScript.

Things I do not like: C++, Lisp, VHDL, OOP.

Main interest: compilers.

Compiler-related links I recommend:


7h
comment When writing an interpreter, how should the type inference algorithm change the parsed AST? Should it?
just rebuild an AST with each transform, it's cheap and purely functional.
12h
comment How can CoffeeScript be written in CoffeeScript?
Wrong. Language traits that are required for writing compilers (pattern matching, ADTs, compile-time metaprogramming, etc.) are not necessarily the traits you want in your target language. And, by the way, you don't need a Turing-complete language to write a compiler.
14h
comment What were the Design Patterns of the procedural programming era?
Fortunately, all that marketing useless gibberish, all that hype words are a relatively new thing in our industry. In the old days we just programmed, without any crap.
14h
comment When writing an interpreter, how should the type inference algorithm change the parsed AST? Should it?
It's common to rewrite an AST in two steps, e.g., replace each expression node with a pair expression = tag * oldexpression, generate and solve your type equations against all the tags, and rewrite an AST again into expression = type * oldexpression.
Jun
16
revised Resources for functional programming beginner
Expanded the link
Jun
10
comment How would I make a compiler in C++?
Your question is about a linker, not a compiler. Compilers are trivial indeed, but linking a COFF binary can be quite complicated. Any reason why you do not want to use an external linker, and generate COFF object files instead? The latter is much easier, e.g., LLVM supports direct COFF writing, and libbfd provides pe-coff support as well.
Jun
9
comment What kind of maths do I need to become an excellent programmer
Any kind of developer must know a substantial amount of discrete math, with logic, graph theory, language theory, combinatorics, complexity theory, algorithmic information theory and relational algebra being the most important.
Jun
3
comment How does one go about implementing a GUI/shell on top of a kernel?
Unless you want to build from scratch a driver infrastructure as big as X11, your only option is framebuffer: tldp.org/HOWTO/Framebuffer-HOWTO
Jun
1
comment Disadvantages of functional intermediate form
What kind of analysis you're going to do upon this intermediate form? SSA is great for dead code elimination, constant propagation, partial specialisation and such. If this kind of stuff is not on your menu, you can skip SSA and use a more relaxed representation for simpler analysis passes. But, generating an SSA form is quite a trivial task, and you can easily convert SSA into CPS (and vice versa), which doubles the benefits.
Jun
1
comment Do most people see a productivity increase in using an IDE?
clisp + slime is an ultimate IDE anyway.
May
31
comment Looking for meaningful, strong argument in favor of antivirus software on development machines
@DanNeely, a guest OS running in VM is definitely vulnerable (Windows). But each instance of it never lives long enough for anything to be able to exploit its vulnerability. Also the fact that both host and guest OS instances are disposable makes it impossible for any security threat to be persistent enough to do any damage. E.g., build nodes never live more than 5-10 minutes.
May
31
comment Looking for meaningful, strong argument in favor of antivirus software on development machines
@DanNeely, good luck infecting a disposable network-bootable Linux host. A virus so clever is unlikely to be stopped by one of those pathetic antiviruses anyway.
May
31
comment Looking for meaningful, strong argument in favor of antivirus software on development machines
A reasonable alternative to AV is to use disposable virtual machines (every session is started with a fresh clone). This way no unintended changes can ever be made, including any possible kinds of malware.
May
30
comment How does a program's virtual address space get translated to physical address space on the stack?
Start by reading this en.wikipedia.org/wiki/Translation_lookaside_buffer and this: en.wikipedia.org/wiki/Position-independent_code
May
30
comment Does domain specific languages use other programming languages?
DSL can either be standalone or embedded into another language (eDSL). It's pretty easy to embed a DSL into C++ or any other proper meta-language, but with something as dumb as Java it's too tricky.
May
26
comment Why don't computers come with specialized hardware such as sorting networks?
Buy a PCI FPGA board and implement whatever extensions you fancy.
May
23
comment Resources for a New Programmer with a Math Background
@DocBrown, formal methods do not depend on an IQ of those who apply them. No matter, mediocre, bad, horrible, but if you follow the method, you win. Isn't it nice? And the stuff in "Clean Code" is far from being formal, it's more akin to art, which, in turn, depend too much on an artist. Not everyone is capable of being an artist, but anyone can apply formal methods.
May
23
comment Resources for a New Programmer with a Math Background
@DocBrown, it's the same from the practical point of view - formal methods really do help in solving problems. Ignoring them is a way to disaster.
May
23
comment Resources for a New Programmer with a Math Background
@DocBrown, just any kind of programming is mathematical. Programming languages are formal languages. Describing a problem solution in a formalised language is a math and nothing but math. And a problem can be solved better if you acknowledge this fact and apply more formal methods instead of doing that "monkey see - monkey do" cargo cult thingy.
May
23
comment Resources for a New Programmer with a Math Background
@DocBrown, of course I do not agree. 90% of the real-world programming tasks could have been solved much more efficiently and with much better quality if all the things I've mentioned were systematically applied. The so called "enterprise software" is pathetic and generally is a pile of crap, simply because the vary basics of computer science are ignored, and a cargo cult "science" is applied instead, all that "best practices", "patterns", etc.