Hacker Newsnew | past | comments | ask | show | jobs | submit | evilthinker's commentslogin

First of I'll assume that by computer science you really mean software engineering, more specifically network and web applications engineering. Otherwise if you want deep CS foundations start by getting a good CS theory book (Sipser or Hopcroft et Al.), and a good algorithms book(Skiena or Cormen), and complement them with some introductory logic(phil/math introductions are generally good enough).

For the "how does the web work question", the real question is if you are really interested in knowing that, if so "Computer Networking: A Top-Down Approach" gives a really in depth analysis of protocols at the different levels of abstraction. Otherwise most web related O'Reilly books cover the surface of what you need to know to develop applications at most small corporations.


Prelude> head [] * Exception: Prelude.head: empty list

Damn I think might need to trace this one.


I thought that this was implemented.

I Clojure its like this: (first []) --> nil

What is in that list? Answer nothing.

I think thats a way to go too.


I haven't used Clojure, so excuse me if there's something I'm missing here, but doesn't that mean that the following is true?

    first [nil] == first []
In which case, I prefer the Haskell way, as it's more specific.


    user=> (= (first [nil]) (first []))
    true


I strongly disagree. If you're expecting the first value of a list, what use is nil?

If you have a list of Ints, then what can you do with nil returned? It's not an Int.

Nils have a habit of propagating through the whole type system, and you then need to have rules about how they apply to every function. (What is 1+nil? What is nil:[1,2,3]?).

Eventually every single function will either have odd behaviour when confronted with a nil, or will be a source of exceptions (which are generally undesirable in a pure functional setting).

Haskell encourages you to write patterns that check for these edge cases, and handle them explicitly:

foo [] = ...

foo (x:xs) = ...


Why would you have nil in a list of integers? In cases where you encounter nil instead of some type you look for you can add behavior to nil without doing if nil? in the function all the time.

I would agree that not having nil is better if you have these big typesystems but for a dynamic languge its hard to avoid.

Question: Don't these static langauge use "unit" to signal what nil would do in clojure (in some casses)?


Still that is more than one can say about most dynamic languages.


And how much this "more" really means?

All it says is that the program pieces fit together. The small benefit of knowing my potentially wrong program got the types of whatever is being passed around right gives me very little comfort when I think about the flexibility I lose by using statically typed languages.


I don't think that there will be that many competition, the ML folks that really want to try something new will go to F#, the Lisp folks will go to Clojure. Still there aren't that many reasons to abandon Common Lisp for Clojure(specially with Oracle controlling the JVM), or ML for F#(for Haskell maybe, but Haskell has its problems too).


The only existing reason is that the two of them run on modern, enterprise accepted platforms. If you're hacking your personal projects in Lisp, you have no reason to switch. If you want to sling some Lisp/ML at work, well Clojure of F# are likely to be your only options.


In that setting, I think F# has an advantage currently, since it's an officially supported/blessed language on Visual Studio and .NET.


You could say Clojure is a Java library. It's a single JAR file.


To ship it, yes, but there's the compiler, too. With F#, if your organization uses the latest Visual Studio, you're good; but if your shop uses a typical Java IDE setup, anyone who wants to build your project has to do extra work beyond the standard environment (e.g. installing Clojure's Eclipse or NetBeans plugins, with extra fun if you depend on Clojure libs that use Leiningen).


Why are people still discussing this? Start-ups don't grow on trees. If there is something to be investigated it will, if there are any problems with angel financing they'll be known, meanwhile all this speculation is a waste of precious time.


I choose the music style according to what I feel like in a given day, but here are some favorites:

Dark Ambient: Lustmord, Gustaf Hildebrand, Robert Rich

"IDM": Aphex Twin(anything choosen from what I have) and Autechre

Metal: Burzum(filosofem), Xasthur, and mostly atmospheric BM

Industrial: Suicide Commando, VNV Nation, SPK

(Fin)NRG: Alek Szahala and Nomic

Classical: Bach, Handel, Liszt and Chopin

Demoscene music: Bitfellas radio

I will generally create a mix of from the above styles in a playlist and listen to it, when it begins to bother me (after some hours) I'll just change music style.

Also sometimes I just get some game CD and listen to the tracks, usually I choose Total Annihilation.



yay for IDM and kvlt black metal.


Those are not reason on not to use C++, but reason on why some people shouldn't be using C++ in the first place. Yes you can do it in python unless you want speed, if I am to interface my python code with C or C++ why can't I write them in C++ in the first place? Also if I were to interface any scripting language code with C I would probably go with Lua.


I'd say "It doesn't work well in most shops" is a damn good reason to not use something.

In general, very little of the program needs to be written in C to get great performance gains.

Additionally, python is vastly different from LUA. Lua is still a scripting language, ruby and python have moved past that.

For someone at age 18 or so, I'd say C is a much much better level of complexity to be tackling that C++


Yes learn it, you should also learn at least one language per paradigm, it will give you a wider perspective on programming and a flexible mind. IMHO one should learn at least: Haskell(or something ML based like OCaML or F#), C++(regardless of what anyone says it will be an useful insight), Java or C#(also check D if you want), something Lisp based(Scheme is small and simple), perhaps some Prolog, Erland and Ada.

Oh and see something of Forth if you like the looks of it and some assembly.


He is kidding right? iTex?


How is that any better than an engine programmed by experts? How is forking going to help us getting uniform display of the elements?


Seems to be working just fine for webkit already.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: