Live data from Hacker News

Perlis Languages

blog.fogus.me

11–20 of 36 posts

Re: Perlis Languages

#11
What will be a "Perlis language" will necessarily individual. What makes it so for you, is that it have some features that is conceptually new for you. For me BASIC, C, and Simula was Perlis languages, but none of them has features completly unique to them, but I learned new concepts from them. On the other hand Java, Python and Lua were not, because I had encountered their core features previously, and learned little from them for that reason. People with a different background would have a different experience.

Few concepts are unique to any computer language, so I would argue that it should be about learning new concepts rather that a new programming language.

Some of the examples he picks are rather good at that, since they contain concepts not part of the mainstream paradigms, and so will have new concepts for most programmers.

Re: Perlis Languages

#12
I spent quite a few hours a while ago trying to organize languages into different language groups in order to pick which languages to learn next. If you're interested in that see the blog post that came out of that: http://hacklash.posterous.com/how-to-choose-your-next-progra... .

Just be warned that I'm coming at it from the outside with most of these languages, to make your final decision try and find someone experienced in multiple languages from the paradigm and ask them which to learn the paradigm with.

Re: Perlis Languages

#14
post #12

I spent quite a few hours a while ago trying to organize languages into different language groups in order to pick which languages to learn next. If you're interested in that see the blog post that came out of that: http://hacklash.posterous.com/how-to-choose-your-next-progra... . Just be warned that I'm coming at it from the outside with most of these languages, to make your final decision try and find someone exper…

Maybe this could be interesting to you. It was done by Peter Van Roy, of Concepts, Techniques, and Models of Computer Programming fame.

http://www.info.ucl.ac.be/~pvr/paradigms.html

Re: Perlis Languages

#15
Tinkering with new languages is fun and worthwhile to a point, but I honestly feel that my time is now better spent learning new problem domains. Languages matter, but the less tangible skills I've developed working across different domains have been more valuable and fundamental. The things I've learned while studying Machine Learning and DSP over the last year are much more broadly applicable than I would have guessed.

Re: Perlis Languages

#16

I would strongly favor Forth over Joy, but either way concatenative languages are really worth exploring. It seems fair to compare Forth with C, as both deal with hardware and memory rather intimately. Compare a C implementation of a Fisher-Yates shuffle: void shuffle(int *array, int n) { int i, j, tmp; for (i = n - 1; i > 0; i--) { j = rand_int(i + 1); tmp = array[j]; array[j] = array[i]; array[i] = tmp; } } With th…

C is normally considered an extremely simple, lightweight language. I think the main lesson Forth has taught me is that we can design much simpler languages in the same space without sacrificing power and flexibility.

But perhaps at the expense of readability. Forth-like languages look quite elegant in small examples but C's more explicit syntax scales much better to larger code bases, IMO.

Re: Perlis Languages

#17
Call me stupid, because I'm just a lowly PHP developer who's a bit confused as to what new things he wants to learn (for better career prospects), but the first reply just emphasises the balance between verbosity and terseness a language should attempt to maintain.

As a fun learning adventure it's interesting - and, as the article says a lot, mind-blowing - but I can read and understand what is going on in C.

Ask me to explain what Forth, or most if not all of the other examples are doing and you'd be lucky to get more than an, "eeeerrrrrrrrrrrrrrrr...." from me. I suppose that experimentation and innovation are more the point with this though.

Re: Perlis Languages

#18

Call me stupid, because I'm just a lowly PHP developer who's a bit confused as to what new things he wants to learn (for better career prospects), but the first reply just emphasises the balance between verbosity and terseness a language should attempt to maintain. As a fun learning adventure it's interesting - and, as the article says a lot, mind-blowing - but I can read and understand what is going on in C. Ask me…

You seem to think that the trouble you have reading some of this code reflects something inherent in the language (either it's too "smart" for you or simply too weird), but I would suggest the only thing it necessarily reflects is something about you — namely, that you have more experience in some areas than others.

PHP is based on C. It is not based on Forth. Thus, if you only know PHP, C code will be more immediately clear to you than Forth code.

There are some things that make languages easier or harder to read in absolute terms, but when you're brand new, similarity to what you already know pretty much dominates everything else. Similarly, English speakers tend to find Spanish easier than Russian or Chinese.

Re: Perlis Languages

#20

Call me stupid, because I'm just a lowly PHP developer who's a bit confused as to what new things he wants to learn (for better career prospects), but the first reply just emphasises the balance between verbosity and terseness a language should attempt to maintain. As a fun learning adventure it's interesting - and, as the article says a lot, mind-blowing - but I can read and understand what is going on in C. Ask me…

Forth examples can be more terse than C examples because Forth uses a stack for storing and manipulating intermediate values while C uses infix expressions and temporary variables. It's not just "shorter" syntax, it works in a different way. My real point with the Forth/C comparison is not that the Forth code is smaller but that it clearly has fewer "moving parts"- the for loop is simpler and provides fewer options, there's no need for special syntax to index array pointers, there's no need to specify method signatures, etc.

Language design is not simply a balance between terseness and verbosity, it's a complex series of tradeoffs between many paradigms and features- some allow you to express ideas more succinctly, flexibly or reliably.

Post reply on HN