Live data from Hacker News

Advanced programming languages (2009)

matt.might.net

91–100 of 208 posts

Re: Advanced programming languages (2009)

#91

> It's untyped, which makes it ideal for web-based programming and rapid prototyping. Given its Lisp heritage, Scheme is a natural fit for artificial intelligence. Why does being untyped and having a Lisp heritage make Scheme suitable for these three tasks?

Web based is because JSON is always easier with dynamic types. Rapid prototyping is because it requires less explicit up front design due to dynamic types. Artificial Intelligence is because metaprogramming is easier in homoiconic languages.

I just don't buy the "dynamic types" lets you iterate faster argument. You are implicitly using types, and how often does that type change such that all the code you've written doesn't need to be updated anyways? And without the benefit of a compiler to tell you what you need to fix. A language like Go is fast to iterate, trivial to parse and serialize JSON, and simple enough that the tools let me make sweeping changes quite easily.

For a while now I have felt that the reason for the creation of languages like Python and Ruby is simply a response to the pain of one such as C++. Now that we have modern languages like Rust and Go, what is there to be gained from sacrificing a type system?

Re: Advanced programming languages (2009)

#92

Earlier quoted context omitted.

Web based is because JSON is always easier with dynamic types. Rapid prototyping is because it requires less explicit up front design due to dynamic types. Artificial Intelligence is because metaprogramming is easier in homoiconic languages.

> because JSON is always easier with dynamic types. I think you mean JSON where the schema isn't defined. If you have full control over the JSON you're consuming, you control the schema. Typed languages aren't any worse than dynamic languages in this case. > Rapid prototyping is because it requires less explicit up front design due to dynamic types. Many types languages have a REPL environment specifically for this r…

[deleted]

Re: Advanced programming languages (2009)

#93

After walking in the land of functions for a long time I wonder if there are advanced advanced languages.

Well, there's:

- Dependently typed languages (ATS, Agda, Idris)¹ should be fairly familiar if you're a Haskell veteran.

- Array languages (APL, J, K, and more obscure ones like Nial) are pretty enlightening if you're a functional programmer (at least they are for me). Most of these trace to Ken Iverson and his Notation as a Tool of Thought. They are a bit brain-bending at first, largely because of the density, but they're fun to use and the density makes comprehension easier after a while.

- Function-level languages (FL, FPr, J) – a somewhat obscure and very advanced sister to functional programming. If you're familiar with Haskell Arrows, there are many parallels. They are, essentially, a more convenient point-free style. Most (all?) of these trace to John Backus (of Fortran and Backus-Naur Form fame) and his 1977 Turing Award lecture Can Programming Be Liberated From the von Neumann Style?

J (http://jsoftware.com/) combines array and function-level programming, and IMO is a very good language to learn to expand your horizons if you're a veteran functional programmer.

--

¹ Coq kinda, but it's more of a theorem prover than a programming language. Agda sort of fits that too.

Re: Advanced programming languages (2009)

#94

After walking in the land of functions for a long time I wonder if there are advanced advanced languages.

The language itself is not, but I would argue that the Wolfram Language has an advanced, advanced standard library.

I'm warry of Wolfram Lang. I'd need to see field report because I think what was demoed, as nice as it looks; is only the working subset. I feel a huge ontological mess underneath.

Re: Advanced programming languages (2009)

#95
post #22

I would argue that a well-known language is fairly expressive in the sense that it is well-known. Imagine English itself was a programming language - this is the best. But for now I would recommend using those who are commonly used in the common platforms of interest (Java, javascript, C etc)

> Imagine English itself was a programming language

That's a terrible idea.

https://en.wikipedia.org/wiki/Buffalo_buffalo_Buffalo_buffal...

Re: Advanced programming languages (2009)

#96

After walking in the land of functions for a long time I wonder if there are advanced advanced languages.

Have you explored languages with dependent type systems such as Agda, Idris, Coq, or Twelf? You could also explore languages from an academic perspective. Benjamin Pierce has written several high quality texts about topics in programming languages.

Not yet (watching some youtube talks and introductory classes in college not couting). But even then I'm not sure they're more 'advanced' than Haskell. Do they implement the full lambda cube ? Even then it feels like constructive proofs are a 'normal' step after recursive functions. I'm curious about complete new way of thinking and modeling, something that would allow full graph exploration and multistaged/layered partial evaluation easily... from abstract concept down to signals and fixed-sized electronic compositions. I don't know what precisely. I don't want to say Categories because it's overloaded these days and I only know it through the 'monad tutorial' end, but I liked the idea of adjoint functors to jump back and forth between concepts.

ps: Esterel/Lustre synchronous programming comes to mind too, or Petri nets ..

Re: Advanced programming languages (2009)

#97

Earlier quoted context omitted.

Web based is because JSON is always easier with dynamic types. Rapid prototyping is because it requires less explicit up front design due to dynamic types. Artificial Intelligence is because metaprogramming is easier in homoiconic languages.

I just don't buy the "dynamic types" lets you iterate faster argument. You are implicitly using types, and how often does that type change such that all the code you've written doesn't need to be updated anyways? And without the benefit of a compiler to tell you what you need to fix. A language like Go is fast to iterate, trivial to parse and serialize JSON, and simple enough that the tools let me make sweeping chang…

Iterate faster != Rapid prototyping.

The type system definitely helps with long term maintainability (and therefore fast iteration) but when your goal is to whip out a Proof of Concept for a greenfield project Ruby wins for me hands down. (Provided it isn't overly complex, defined as "can be completed in an hour or two").

Re: Advanced programming languages (2009)

#98

After walking in the land of functions for a long time I wonder if there are advanced advanced languages.

Agreed with siblings: Agda, Idris and the like are one option.

You can try Curry or Mercury for Logic/Functional cross.

Shen for something with Turing-complete type-system (by design, as opposed to C++ templates).

Do you know any array language? Like J or K (or APL, though personally I never dared). I can recommend J as a better documented and easier to get into language.

Have you seen Avail (http://availlang.org)? It looks very funny at first, but it is incredibly expressive.

What about Factor and Cat/Kitten? Stack-based languages, the latter additionally statically typed.

Re: Advanced programming languages (2009)

#99
post #93

After walking in the land of functions for a long time I wonder if there are advanced advanced languages.

Well, there's: - Dependently typed languages (ATS, Agda, Idris)¹ should be fairly familiar if you're a Haskell veteran. - Array languages (APL, J, K, and more obscure ones like Nial) are pretty enlightening if you're a functional programmer (at least they are for me). Most of these trace to Ken Iverson and his Notation as a Tool of Thought . They are a bit brain-bending at first, largely because of the density, but t…

I had gnu apl installed (along with emacs mode:). APL and it's siblings are amazing, tiny, expressive, light.. lot to love. Juts nothing as mind bending as; say lambda calculus.

Didn't know FL/FPr were arrow-like. Didn't even know they were implemented .. I thought Backus quit because of IO.

Lots of people are suggesting the Idris/Agda road .. I guess I have my answer.

Re: Advanced programming languages (2009)

#100

Prediction: APL, J, K, or Q will be on this list soon.

idk if you are serious or not but part of me feels like the fact that those languages haven't gained much attention in the last 30 years means that they won't get much attention in the future.

I think it's inevitable we'll use some of their toolset. The problems we solve don't get easier so we will reach for more powerful tools.

As an example, just being able to think in terms of a transpose makes many problems trivial: http://michaelfeathers.silvrback.com/moving-quickly-with-com...

Post reply on HN