Live data from Hacker News

Advanced programming languages

matt.might.net

21–30 of 82 posts

Re: Advanced programming languages

#21
post #20

Earlier quoted context omitted.

Scala has Twitter to champion it in business and tech circles as well as creator Odersky's technical university affiliations to appeal to the academic crowd. Clojure has a lot going for it in terms of theory but I don't know that it can claim any of the social proof of Scala. The closest thing I can think of for Clojure is all of Siebel's Lispy interview questions from Coders at Work that lead an underinformed coder…

AFAIK the "theory" in clojure also stems from the scala world in that clojure data structures are based on work done for scala or by scala affiliates.

No. All that work predates both, in some cases by several years.

In fact, a good friend of mine is working to put scala bindings over all the clojure data structures so they can be used transparently in scala. They're that good.

Re: Advanced programming languages

#22
post #4

>[Scheme is] untyped, which makes it ideal for web-based programming and rapid prototyping. Erm... While Scheme can be useful for web and prototyping, it is typed. That's why R5RS requires functions like number->string and so on.

What exactly does "typed" mean? Clearly there's a difference (in every language I know of) between True and 3.5 (boolean vs. float). Unless the language treats all memory locations equally and doesn't know anything about a memory location other than its pattern of 0's and 1's, I would consider the language "typed."

Re: Advanced programming languages

#23

Earlier quoted context omitted.

I seriously think Clojure is too much to take in at the first introduction. It's really hard to get your brain around everything done right, when compared to traditional programming. You need to use it for a while to really get why it's approach to state (not concurrency) is awesome.

I think that this may be a side-effect of the literature, which is very lispy and computer sciency. For someone like me, that's exactly the right tack. For someone who may not take for granted all the claims Rich and his book-writing compatriots are making (let alone take for granted the lisp code-as-data is an foundational revelation of computer science), it may be a problem. Because really, Clojure is in many ways…

That, and we're still getting our act together in the Clojure world. Stay tuned :)

Re: Advanced programming languages

#24
post #6
post #4

>[Scheme is] untyped, which makes it ideal for web-based programming and rapid prototyping. Erm... While Scheme can be useful for web and prototyping, it is typed. That's why R5RS requires functions like number->string and so on.

Some people use "type" exclusively to refer to compile-time entities. By this definition, languages that are commonly referred to as "dynamically-typed" are actually "untyped", because they have only one compile-time type, which is essentially the same as having no types.

Specifically, this is the definition used in Computer Science research. Unfortunately, the communication between that community and the larger community of programmers is so poor that it was several years after I finished my CS bachelor's degree before I figured out why some people insisted that languages like Python were "untyped".

Re: Advanced programming languages

#25
I think haskell is worth watching. If projects like repa and dph are able to deliver parallel performance speedups, then haskell could become a top choice for machine learning and related algorithms.

Personally, I have found haskell to be hard to program in initially, but once you get started, refactoring and feature changes feel "easy".

Re: Advanced programming languages

#26
post #22
post #4

>[Scheme is] untyped, which makes it ideal for web-based programming and rapid prototyping. Erm... While Scheme can be useful for web and prototyping, it is typed. That's why R5RS requires functions like number->string and so on.

What exactly does "typed" mean? Clearly there's a difference (in every language I know of) between True and 3.5 (boolean vs. float). Unless the language treats all memory locations equally and doesn't know anything about a memory location other than its pattern of 0's and 1's, I would consider the language "typed."

What "typed" means depends on who you're talking to. There's the definition used in CS research papers, and the definition that programmers actually use.

Very few languages lack a strong notion of run-time type. C and friends are the only ones I can think of where you can treat a block of memory as more than one type without the compiler or runtime throwing a fit.

Re: Advanced programming languages

#27

And a strong sell for Scala and no mention of Clojure. It confuses the hell out of me; clojure is fast, mature, and has a OO syntax and model to rival CLOS. It's got built in laziness and te best concurrency primitives I've seen to date (and I was a professional Erlang programmer). What does it take to break into the general public's consciousness? Clearly it's not the parens.

This article is from December 2008, when both languages were fairly young but Scala had been around significantly longer than Clojure.

Re: Advanced programming languages

#28
post #6
post #4

>[Scheme is] untyped, which makes it ideal for web-based programming and rapid prototyping. Erm... While Scheme can be useful for web and prototyping, it is typed. That's why R5RS requires functions like number->string and so on.

Some people use "type" exclusively to refer to compile-time entities. By this definition, languages that are commonly referred to as "dynamically-typed" are actually "untyped", because they have only one compile-time type, which is essentially the same as having no types.

It's rather semantic, but I would differentiate typed from untyped by type checking vs. type being an inherent property of a variable.

So you have something in Scheme like:

     (define foo 1)
     (define bar "1")
And that is typed, the former being a number, the latter a string. If you try to subsequently do:

     (+ foo bar)
the program will error out.

Contrast this with what I would consider an untyped language like Python or Perl, where the translation from string to number is done without any warnings showing up.

Re: Advanced programming languages

#29
post #17

Earlier quoted context omitted.

Note that there is a good open source implementation of the .NET framework, Mono, so you can develop in C# and F# and target Linux, MacOS and other platforms. Is Mono actually usable with F#? The last time I checked (2 months ago) the F# plugin for MonoDevelop didn't work and the questions on how to getting it to work (by various people) went unanswered by the developer. The runtime performance of F# code was shaky a…

[Disclaimer: I'm a compiler dev working on F# at MSFT.] Performance and user experience on Mono are something we're definitely trying to improve - we spent a fair amount of time trying to make our Mono story better for our 2.0 release, and plan on investing more in this area as we move forward. We can't be everywhere at once, so your feedback is really important here - If you're having problems with our tools on Mono…

Thats awesome! Thanks for sharing. I'll give Mono/F# another spin in the next week and will report problems as suggested by you. Again thanks.

Re: Advanced programming languages

#30
post #16

I smiled when I read this: Haskell's type system literally allows the compiler to infer the correct code to run based on its type context It literally has overloading! Imagine that!

How many other programming languages have a type system that supports overloading on both parameter types and the desired return type?
Post reply on HN