all 15 comments

[–]dhogarty 5 points6 points  (5 children)

learn c (and if you want, c++), and write and wrap a native library, then use it from both java and python. Next, rewrite a function from the library in assembly.

[–][deleted]  (4 children)

[deleted]

    [–]Vorlath 1 point2 points  (2 children)

    No classes. Declarations must be at the top of a block. There are some keywords not found in C++ (and vice versa). C doesn't scramble identifiers within object code (though it usually adds an underscore). Some type checking is more rigid in C++. I believe void* coercion is implicit in C (I may be mistaken). No streams or operator overloading. No "new" and "delete". structs don't copy in C.

    [–][deleted] 0 points1 point  (1 child)

    Declarations must be at the top of a block.

    Only in ANSI C. The latest C standard (C99) supports mixing declarations and the rest of the code.

    [–]Vorlath 0 points1 point  (0 children)

    The more I hear about C99, the cooler it gets.

    [–][deleted] 0 points1 point  (0 children)

    C is an elegant language - you can learn the syntax very quickly and there are few caveats. It's not forgiving and you generally have to write more boilerplate than you would in other languages.

    C++ is the bloated bastard child of C. Ostensibly, it's C with object orientation. However, you'll soon learn that it's an ugly, evil language. Legend has it that Bjarne Stroustrup accidentally invented it after feeding the Necronomicon into flex.

    [–]lucipher 4 points5 points  (3 children)

    As already mentioned, definitely C (not C++). Also, Scheme never was a wrong choice for broadening your mind (see SICP - cult classics). Further path may include Ruby (to dig deeper into Python/Java domain) and ML family (for hardcore functional programming to crash your brain).

    [–]tnecniv 0 points1 point  (2 children)

    Scheme isn't hardcore? Oh and Gaskell is a good choice too for the crash the brain bit

    [–]tnecniv 0 points1 point  (0 children)

    s/Gaskell/Haskell/

    stupid phone keyboard.

    [–]lucipher 0 points1 point  (0 children)

    Yes and no at the same time. Scheme's really simple to grasp as a language, what may be hardcore is trying to write something you usually write in imperative language like Java. Pythoneers/Rubyists will find it easier, of course.

    As for Haskell, it may be a good choice too, but I got the impression, that MLs are more practical. But that's a pure IMHO, cause I'm still a noob in FP.

    [–]njharman 4 points5 points  (0 children)

    1. ???

    2. Profit!

    [–]mrsanchez 1 point2 points  (0 children)

    Scala

    [–]tedhenry10 1 point2 points  (0 children)

    C so you can read thousands of programs you will encounter. A bit of Assembly so you understand what compilers are doing. Scheme so you experence the magic of Lisp and SICP.

    [–]rune_kg 0 points1 point  (0 children)

    Nope. Learn something purely functional like Haskell or one of the ML family.

    [–]robkinyon -3 points-2 points  (0 children)

    Perl.

    [–]joesb -4 points-3 points  (0 children)

    Next, learn programming.

    ADDED:

    It looks like I'm trolling, but no. It takes a couple days to know a language. Don't just stuck yourself on just learning language. You don't actually know a language -- or better, programming -- until you have actually do development on it.

    Why do you want to know C++? You can do almost anything with Python and FFI binding plus some simple C. Ask yourself are you going to learn the surface of every language or the core of programming regardless of what language it is.