Skip to content

Instantly share code, notes, and snippets.

@hzhou
Created March 30, 2017 16:18
Show Gist options
  • Save hzhou/fd03f98277a15e5389660c0842cb50d3 to your computer and use it in GitHub Desktop.
Save hzhou/fd03f98277a15e5389660c0842cb50d3 to your computer and use it in GitHub Desktop.
Researcher, Developer, and Producer

Not to rewrite is a very sensible decision due to the fact that the current way of programming is un-rewritable. For example, people don't write FORTRAN in every language. The choice of programming language often fundamentally change the way we approach programming. Switching language not only involves addition or reduction of language constructs, it fundamentally alters programmer's highest level thinking process. That is not a merit.

What we need is a meta-layer programming interface that isolates our higher thinking from lower language concerns to some degree. If you can keep the higher level understanding, then rewriting become less of a barrier. We need write pseudocode in every language.

I have been exclusively programming with a meta layer, MyDef, for quite a while, and I routinely re-write my Perl program to C, not without effort, but always a worthwhile effort trading for the goal of rewriting (speed in this case). I am a researcher, and I rarely write production code. But for production code, I think most software should consider rewriting in Rust.

Prototype in Perl/Python, develop in C, and produce in Rust -- makes good sense. It makes good sense in our current non-software industry, where researchers, developers, and producers are people with different focus and use different material and tools. This is not true for our software industry, where people who are not interested in researching or developing are forced to research and develop, and people who are only interested in research are forced to develop and people who only interested in developing are forced to research and produce.

My example: http://hz2.org/blog/send_more_money.html

@NoraCodes
Copy link

Prototype in Perl/Python, develop in C, and produce in Rust

This seems like the worst of all possible workflows. Using a language with a good type system, like OCaml, Rust, or even Haskell if you can stomach it, is more valuable at the design stage, not less.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment