Live data from Hacker News

Programming languages worth checking out

h3rald.com

61–70 of 70 posts

Re: Programming languages worth checking out

#61
post #59
post #55

Earlier quoted context omitted.

It's not that it magically makes thing parallel. It's that it puts the tools to do it in the hands of Joe Developer who has hankered to do functional programming in the "real world" and now can say to his manager, look, it's part of Visual Studio now, it's official, there's no reason I shouldn't do this. I am confused as to why you say OCaml/F# don't even have theoretical applications here - it it because the .NET li…

The main thing Joe Developer lacks to do parallel programming is massively parallel hardware, and if he's happy with just getting a 100× speedup with GPGPU hacking, maybe he doesn't even lack that. High-performance parallel programming has very little to do with functional programming languages, today and in the foreseeable future. And please, PHP and MySQL? For computation? Are you serious? What do you think people…

I keep saying this, there is more to computing than websites. I completely concede your point that F#/OCaml/FP in general has little to offer when it comes to serving up web pages more quicky. Formatting records from a database for display on a client device isn't all that different since the 80s anyway. Fortunately, I don't care about doing that. I care about, for example, people not trying to do Monte Carlo work in Java because that's the organization's "standard" language. A language like F# that it is acceptable to use in a large organization with arbitrary standards made by non-technical people is a huge deal.

Re: Programming languages worth checking out

#62
post #53
post #52

Earlier quoted context omitted.

Because functional languages are a good choice for extracting as much parallelism as you can get from your algorithms.

No. CUDA yes. Cg yes. HLSL yes. Verilog yes. VHDL yes. C++ or Java with MapReduce yes. PHP and MySQL with memcached yes. Erlang yes — and it really is functional, inside each process, anyway — that is, the level where you aren't getting any parallelism . Octave or R, potentially, but not today, as far as I know. Mathematica yes, and it, too, is mostly functional. In theory, side effects are what make parallelism hard…

Just for my own edification, since you seem quite familiar with the subject: Is Obsidian* a big fat waste of time that'll never be as good as just compiling Haskell for a CPU like a normal person? 'cause I was considering investing some time in learning it, when I wouldn't have the free brain cycles for CUDA.

* http://www.google.com/search?q=obsidian+haskell

Re: Programming languages worth checking out

#63
post #61
post #59

Earlier quoted context omitted.

The main thing Joe Developer lacks to do parallel programming is massively parallel hardware, and if he's happy with just getting a 100× speedup with GPGPU hacking, maybe he doesn't even lack that. High-performance parallel programming has very little to do with functional programming languages, today and in the foreseeable future. And please, PHP and MySQL? For computation? Are you serious? What do you think people…

I keep saying this, there is more to computing than websites . I completely concede your point that F#/OCaml/FP in general has little to offer when it comes to serving up web pages more quicky. Formatting records from a database for display on a client device isn't all that different since the 80s anyway. Fortunately, I don't care about doing that. I care about, for example, people not trying to do Monte Carlo work i…

I keep saying this, there is more to computing than websites.

I'm aware of that; I wasn't suggesting that people should be programming their websites in Verilog, after all. But running websites is part of computing.

I completely concede your point that F#/OCaml/FP in general has little to offer when it comes to serving up web pages more quickly.

That wasn't my point; I think functional programming might have a lot to offer when it comes to serving up web pages more quickly, and especially programming web-server software more easily. My point was that functional programming doesn't have a lot to offer when it comes to making your code more parallel.

Formatting records from a database for display on a client device isn't all that different since the 80s anyway.

I cannot imagine in what sense this sentence could be true. The database architectures, the languages used, the required level of efficiency, the CPU architectures, the scale of operations, the kinds of failure we expect from components, the structure of the machines (then SMP mainframes, now shared-nothing clusters of thousands of computers), the type of people doing it, the client devices, the networks, the formatting, and the nature of the data have all changed dramatically since the 80s.

I care about, for example, people not trying to do Monte Carlo work in Java because that's the organization's "standard" language. A language like F# that it is acceptable to use in a large organization with arbitrary standards made by non-technical people is a huge deal.

Do you think doing Monte Carlo work in Java is bad? Because of performance? Last I heard, the optimizations in the CLR's JIT were pretty minimal, while the Java JITs had pretty much reached parity with GCC and were breathing down icc's neck. (What Fortran compilers do people use these days?) Maybe you should get excited about people doing Monte Carlo work in Scala instead?

Anyway, whether a language is pleasant to program in or has a good compiler has very little to do with whether it helps you take advantage of available hardware parallelism — unless the way in which the compiler is good is that it auto-vectorizes your loops or supports HPF directives or something. As far as I know, F# and Java are equally abysmal at that.

Re: Programming languages worth checking out

#64
post #62
post #53

Earlier quoted context omitted.

No. CUDA yes. Cg yes. HLSL yes. Verilog yes. VHDL yes. C++ or Java with MapReduce yes. PHP and MySQL with memcached yes. Erlang yes — and it really is functional, inside each process, anyway — that is, the level where you aren't getting any parallelism . Octave or R, potentially, but not today, as far as I know. Mathematica yes, and it, too, is mostly functional. In theory, side effects are what make parallelism hard…

Just for my own edification, since you seem quite familiar with the subject: Is Obsidian* a big fat waste of time that'll never be as good as just compiling Haskell for a CPU like a normal person? 'cause I was considering investing some time in learning it, when I wouldn't have the free brain cycles for CUDA. * http://www.google.com/search?q=obsidian+haskell

I didn't know about it! From a cursory look (all I can find is presentation slides?), it doesn't sound like you'll be able to take any off-the-shelf Haskell subroutines and run them in parallel on the GPU; rather, it's an embedded DSL for constructing shader programs. So I imagine you'd have to learn both CUDA and Obsidian to use it.

But it would be awesome if someone came along and proved me wrong.

Re: Programming languages worth checking out

#65
post #2

"Unlike other Lisps (and Schemes) you may have encountered before, Clojure comes with some interesting additions: [...] Many pre-built data structures, like Vectors, Maps, Sets, Collections, …" Here I stopped reading.

The things I like about Clojure:

1. It has the simplicity fo Scheme. 2. It has literals for datastructures. Hashmap: {"BANK" 122323 "TRANSFER" 212001} . That's it, I created one. Oh, here's a vector for you: [1 2 3 4 5]. Veru convenient, not revolutionary by any measure, just very convenient. And it doesn't sacrifice any power for that practicability. 3. It is more functional than common lisp. 4. Access to all the Java libraries. Whatever you want to do, there is a library. And yes the excessive amount of documentation you have to read to just do something simple might frustrate you but it's a lot more effective than re-solving a problem that has been solved a hundred times before.

I think these things together make it an excellent language.

Re: Programming languages worth checking out

#66
post #24

What about Prolog? Why it's not in the list?

Have you tried programming in Prolog? The automatic backtracking search is cool when it is exactly what you want, but most of the time it isn't. So you end up working to keep it on the leash least it give you exponential run times when you were not expecting it.

I ended up concieving my algorithms without thinking about Prolog's backtracking, and then coding: bending the Prolog interpreter to my will by getting the backtracking to implement the control flow called for by my algorithm. It seemed a bit indirect and a bit clumsy.

My attempts at writing a parser in Prolog were absurdly slow. Later I read that there are ways of writing parsers in Prolog that work well, and writing parsers was one of the killer apps for Prolog, so I guess I never really understood programming in Prolog properly. On the other hand it is troubling that I failed at one of the things the language is supposed to make easy. I'm in no hurry to give it a second look.

Re: Programming languages worth checking out

#67
post #16
post #14

Earlier quoted context omitted.

Smalltalk blocks are objects that respond to messages about themselves, so yes, Smalltalk offers the same kind of reflection, in fact it invented it. (It's possible that Io takes it further in some respect, but I'd need to see details.) So which (if any) of all these languages will you use to do a real project?

The very reason I wrote this article in the first place was that I couldn't make upmy mind. I am, as a matter of fact, interested in all of them: I was hoping you people could help me decide. As a matter of fact, I work as a technical writer, so I'm not going to use any of these for any big project. However, I do code in my spare time and prepare small programs to automate tasks at work, when my boss lets me. At the…

I'm reading through the new _Real_World_Haskell_, and thoroughly enjoy it.

Re: Programming languages worth checking out

#68
post #26

Earlier quoted context omitted.

...Erlang is bad enough :P

In the quick looks I've made at each language, I found Prolog much easier to understand than Erlang. Prolog's pure logic syntax is simple if you already know 1st order expressions. Erlang borrows some syntax from Prolog but doesn't have Prolog's simplicity.

Erlang has its roots in prolog (was originally built on top of prolog, actually..) Software Engineering Radio's episode 89 is a great listen for anyone interested in Erlang

Re: Programming languages worth checking out

#69
post #51

Earlier quoted context omitted.

I co-wrote (with Steve) SoundConverter for Windows: http://dekorte.com/projects/shareware/SoundConverter/ The interface talks to an Io "server" which handles business logic. We're currently working on a shopping aggregation startup. The crawler is written in Io. Pixar's RenderMan image tool uses Io as its scripting language: https://renderman.pixar.com/products/tools/it.html Io is still under development so you might…

Could someone provide more up-to-date Windows binaries of both the core and the addons?

I'll try to if I get some time. I haven't compiled on Windows in a while so I'm sure there are some bugs.

Re: Programming languages worth checking out

#70
post #64
post #62

Earlier quoted context omitted.

Just for my own edification, since you seem quite familiar with the subject: Is Obsidian* a big fat waste of time that'll never be as good as just compiling Haskell for a CPU like a normal person? 'cause I was considering investing some time in learning it, when I wouldn't have the free brain cycles for CUDA. * http://www.google.com/search?q=obsidian+haskell

I didn't know about it! From a cursory look (all I can find is presentation slides?), it doesn't sound like you'll be able to take any off-the-shelf Haskell subroutines and run them in parallel on the GPU; rather, it's an embedded DSL for constructing shader programs. So I imagine you'd have to learn both CUDA and Obsidian to use it. But it would be awesome if someone came along and proved me wrong.

Thanks for the read--now, how 'bout another? http://www.cse.unsw.edu.au/~chak/papers/gpugen.pdf, another Haskell-embedded GPU DSL, claims to work at a higher abstraction level than Obsidian, but still provide high performance general-purpose GPU programming capabilities.
Post reply on HN