2,865 reputation
1015
bio website jelv.is
location Berkeley, CA
age 21
visits member for 3 years, 7 months
seen 2 days ago

I am a student interested in programming languages, functional programming, program synthesis, type theory, universal algebra and startups (not necessarily in that order!). In the near future, I want to combine as many of these as possible.

I am currently an undergraduate researcher at the Berkeley ParLab, working on program synthesis. This past summer, I was a tech intern at Jane Street Capital, brazenly using OCaml in the real world. Right now, I'm leading a meetup group about type theory; you can see the slides here or just show up to the next on if you live near SF ;).

I am always happy to chat: my email is tikhon@jelv.is

GitHub: http://github.com/TikhonJelvis

Website: http://jelv.is


Jun
3
comment Programming languages, positional languages and natural languages
You should also note programming languages that are primarily inspired by math. At least in PL research, these are fairly common.
Jun
3
comment Is musical notation Turing-Complete?
What you listed is not necessary for a Turing complete language. Lambda calculus only has applications, variables and lambdas (e.g. no loops, states or commands) but is Turing complete. The same goes for a bunch of other models of computation like SKI combinators.
Jun
3
comment Is musical notation Turing-Complete?
Building a Turing machine is the standard way to prove something is Turing complete, but the converse is not true--simply because you cannot figure out how to build a Turing machine does not mean something is not Turing complete. A Turing machine (with a tape and all) is just an arbitrary abstraction that has enough computing power; there are other abstractions just as powerful with no notion of tapes. Take a look at lambda calculus, SKI calculus or some esoteric languages (Fractran is cool).
Jun
2
comment What's the difference between computer science and programming?
That's a little bit narrow. At the very least, the "Algorithms, Machines and People" lab at my university would like to disagree :). And that lab contains some of the top CS researchers, period. Also all the HCI people everywhere. I'm being a little facetious, but CS is really more broad than just algorithms and math.
Jun
2
comment What's the difference between computer science and programming?
Also, most of the people I know working as programmers don't do it for the money (although the money certainly doesn't hurt!): they do it because they love programming and they love making stuff and they love solving hard problems. Some of the smartest people I know could be making far more money in finance or the like, but instead they work for a startup or Google or Facebook just because they really love it. (Of course the salaries there aren't shabby either.)
Jun
2
comment What's the difference between computer science and programming?
Except it's not really a "science" in the same way as physics or chemistry: we don't even pretend to follow the scientific method. Even the "soft" sciences do experiments with control groups and the like; CS has more in common with engineering and math than actual science.
Jun
2
comment What's the difference between computer science and programming?
I don't think you should tie CS (despite the name) too closely to computers: first and foremost, it is the study of information. It just happens that the term "computer" encompasses most of the different physical tools we use to work with information, so almost any study of information is going to involve programming a computer.
May
31
awarded  Nice Answer
May
30
comment Maybe monad vs exceptions
Also, regarding (1): you could easily write a monad that can carry error information (e.g. Either) that behaves just like Maybe. Switching between the two is actually rather simple because Maybe is really just a special case of Either. (In Haskell, you could think of Maybe as Either ().)
May
30
answered Maybe monad vs exceptions
May
30
comment Maybe monad vs exceptions
@Oak: that's true, but that wasn't really my point. What I'm saying is that you get null checking exactly like that (e.g. if Nothing then Nothing) for free because Maybe is a monad. It's encoded in the definition of bind (>>=) for Maybe.
May
30
comment Maybe monad vs exceptions
@Oak: Regarding (3), the whole point of treating Maybe as a monad is to make the propagating None implicit. This means that if you want to return None given None, you do not have to write any special code at all. The only time you need to match is if you want to do something special on None. You never need if None then None sort of statements.
May
30
comment Why is the “kill” command called so?
To be entirely fair, the difference between moving and renaming a file is rather arbitrary. "Renaming" a file is just moving it to a different location which happens to be in the same directory.
May
19
revised Why isn't rich code formatting more common?
edited body
Apr
19
comment Do real-world algorithms that greatly outperform in the class below exist?
I think it's also partly historical--the algorithm for turning a regular expression into a DFA was patented when some of the earlier tools (sed and grep, I guess) were being developed. Of course I heard this from my compilers professor who wasn't entirely sure, so this is a third-hand account.
Apr
19
comment Should a new programmer focus on a single technology until he's proficient at it?
This is why I think SICP is the perfect introductory text--it covers a bunch of different ideologies in a uniform manner; you get to reuse syntax (sexps) and concepts while learning about functional programming, OOP, logic programming and even low-level register-based programming.
Apr
11
comment What are some characteristics of Python that makes it unique as its own language?
If you think Python has low syntactic overhead (despite having an obscenely complicated grammar and a relatively large amount of syntax sugar), what do you think of Scheme?
Apr
11
comment How were some language communities (eg, Ruby and Python) able to prevent fragmentation while others (eg, Lisp or ML) were not?
@root45: Don't Python libraries fail to work on alternative implementations (e.g. PyPy) with reckless abandon?
Mar
22
answered What do you use macros in your editor for?
Mar
22
comment Why was Tanenbaum wrong in the Tanenbaum-Torvalds debates?
@MasonWheeler: Of course. Anybody can pick up Ubuntu and use it with no command line stuff at all. My roommate--certainly not super tech literate--had no problems moving from Windows to Ubuntu. Other people I know using Ubuntu--varying in experience but all not experts--have not had any problems either. My old roommate last year had more problems with his Mac than my current roommate does with Ubuntu, at similar levels of computer experience. (Even printing, of all things, was easier by far on Linux than on the Mac!) So the whole Linux command line thing is a gross misrepresentation.