views:

696

answers:

28

Ok, where do I go now? I have studied

  1. C, C++
  2. Lisp
  3. Prolog
  4. Forth
  5. Erlang

What programming language can help me find the core principles of the lost art, programming.

+2  A: 

Do some assembly language programming. There's much knowledge to be gained from it!

Brian Knoblauch
Thanks, I will now do that.
Flinkman
+5  A: 

EDIT: apparently he (or someone else) deleted that post (where he asked if it's worthwhile to learn Forth), nevermind my remark

4 hours ago you asked if you should learn Forth.

If you can learn a new language in four hours, just learn them all ;)

Pieter
That quick,huh? It's like eating burrito and claiming "I know Mexican food". One does not know a language until they become frustrated by its flaws.
Stu Thompson
+2  A: 

You should probably take a look at some scripting languages such as perl (which is quite tightly integrated with regular expressions) or python (which has fixed indentation and is now very popular).

Using a scripting language allows you to familiarize yourself with dynamic typing but comes at the cost of performance.

It also allows you to get something working very quickly, and can assist with things like rapid prototyping.

kaybenleroll
Thanks. I know bash, ruby and python. I want some thing new, something exiting. I want to learn the programming zen that you cant put words on. How do I learn that?
Flinkman
+6  A: 

Smalltalk for some hardcore object-orientation. C# is far from that level.

Haskell for functional programming that is purer than Lisp.

Assembly for learning low-level machine details.

Sebastian Redl
Smalltalk. interesting. But what is the better language for OOP. Lisp or Smalltalk? I think I chose Objective-c.
Flinkman
Objective-C is really just a combination of Smalltalk and C. Smalltalk would get you a more pure OO experience, but I imagine Objective-C would be easier for you to learn. Bonus points if you have a mac or want to write an iphone app.
Russell Leggett
+1  A: 

PLC or Machine code; to grasp the real fundamentals of programming and Miranda or Smalltalk to grasp the ultimate in abstract programming.

Martin Spamer
+2  A: 

Do you learn it for fun or for profit? I find Perl to be a very interesting language. It'a not only fun to use, but in fact very useful and can save a lot of time thanks to huge code repository at cpan.org

aku
I want to feel enlightened, that's all.
Flinkman
To answer the question and to fill up the 10 chars quota that is expected of me writing this comment. I'm just learning this for fun.
Flinkman
+1  A: 

Learning a programming language won't make you a hacker. A language is a tool:a mean. Becoming a hacker is the end.

The question also depends on how do you define a 'hacker'. In the original term, or the definition i like most, a hacker is some kind of "extreme expert in a subject", so to become a hacker you must become an expert willing to push the limits of the knowledge in that subject.

Ricky AH
+1  A: 

Assembler (x86 or Z80), Object Pascal and C# will give you a rounded view on the development world. Learning Visual Basic may help you getting a job. Learning Perl will definitely be useful if you work with *NIX platform

Ilya Kochetov
A: 

You might want to the check out Dataflow programming for the fun of doing something different.

Aleksi
+2  A: 

R6RS Scheme

leppie
Thanks. Scheme. Do they have macros?
Flinkman
Of course! I just posted a link to one of my manlier macros (some other question I think).https://ironscheme.svn.codeplex.com/svn/IronScheme/IronSchemeConsole/ironscheme/linq.ss
leppie
Then Scheme it is. :)
Flinkman
+3  A: 

Not a programming language, but I would definitely recommend you spend some time learning about machine architecture. You gain an appreciation for how the CPU carries out instructions, and you should also learn some optimisation, such as implementing modulo with bitwise AND as it is hardware supported (on most architectures).

I think it all comes down to what you program, i.e. what level of familiarity do you need with the machine? If you are coding embedded/video/etc you will certainly need to know how the architecture runs. However if you code at a much higher level (i.e abstraction from the machine) you can argue that the compiler will optimise for you. So your milage may vary. I for one highly recommend it whatever level you program at.

As for a language, I would probably recommend Python, it's practical and interpreted, but it is debatable how it will help you with the principles of programming.

mdec
architecture, how hard can it be. Memory access cost 1/10000 of network access. Simple. =)
Flinkman
+2  A: 

If you want low level hacking, go for assembly and learn the raw low level details. IT will go into all the details for how computers do things, and allow manipulations in lower, machine language based languages that much more possible.

If you want higher level hacking, like with networks or web programming, I would recommend either ruby or perl. Ruby is more lisp-like, and perl more c like, but both are scripting languages which have quite a lot of 'hacking' potential.

Finally, for code hacking in general, make sure you understand everything that is used by what you are working with. Learn all the underlying assumptions code, study it, and watch how other people think about the code they write.

deterb
A: 

Or look at the graphs in this article and pick one that seems to go up. It might be a lottery but it doesn't matter it will still make you a better programmer to learn some new concepts:

13 reasons why Ruby, Python and the gang will push Java to die… of old age

klasbas
A: 

Learn some dynamic language, like Python or Ruby. They're imperative and have actually appeared in some answers, but there's more. Not only are they scripting languages. You can do many interesting things them, like duck-typing and monkey-patching. Try writing some test code in one of them - it will definitely be a new experience compared to static typed languages or functional languages.

Also Haskell may be interesting for you. You already investigated functional languages, but Haskell is quite distinctive anyway.

Java Script may also be interesting choice. It's a dynamic, scripting language, but has its own issues ;-) Programming with libraries like jQuery or Prototype will certainly give you some new insights.

And yes, Assembler could also be nice, if you're interested (you wrote "hacking" - then maybe even more, depending on the meaning).

phjr
A: 

Learning SQL will stretch your brain in a different direction to the languages you mention, even if it might not classify as a language by everyone's standards.

Benjol
A: 
  • Haskell. Haskell is a purely functional language, and as such forces a very clean way of thinking about your program and data. Also, with things like list comprehension, you can make very beautiful code :-)
  • Lua, for a very minimalist language. This will teach you how to build big starting with small, versatile building blocks. Also, working with the very nice Lua/C api can teach you how usefull an extension language can be.
Jan de Vos
A: 

Brainfuck is a language with eight, count 'em eight instructions. It won't teach you what exactly is happening in your CISC processor all day, but it will be a big challenge to accomplish what you want to accomplish with so little. It may also teach you that using the right language for the right task is a big saver of time and headaches, because Brainfuck is the wrong language for every task, and it is a very efficient converter of time into headaches and barely-useful code. But it's fun for awhile and quite a challenge.

First, write an interpreter for it in your language of choice (by now you should have plenty of good options) and then start building yourself a library of Brainfuck code that you can use for more complicated things, like addition, multipliciation, function calls, queues...

The wiki entry may also come in handy.

Kevin Conner
A: 

If you want to learn "hacking" then you should pick one language and get indepth knoledge on it, not just learn basic syntax. Try writing programs. Read through code of other people.
I think you could really say that you know c if you understand what the programs actualy do http://www.ioccc.org/main.html'>here from first glance at the code.
By knowing lots of languages you wont be able to hack anything. You need knowledge on protocols, priciples how computers works and lots of other thing.
There is fun place http://www.hackthissite.org/'>www.hackthissite.org I recommend you to go :)

+2  A: 

FORTH is not much used these days, sadly, but if you want to learn about economy of design and how software can be designed to be extremely simple and elegant, then it is the supreme example of that. What your average compiler or scripting language implements in millions of lines of code FORTH implements in 1000's or even 100's. More than that it WILL teach you what truly flexible and reusable code is. FORTH is less a language than a development philosophy, and it is a very good way to understand that philosophy.

Thanks, you are my friend. =)So you are saying, factor?
Flinkman
A: 

Chiming in another vote for a dynamic "scripting" language like Python, Ruby or Groovy. It'll make you think about things in a new way: perhaps "why is it so easy to get stuff done in this language, and what price does this ease come with?"

Steve Losh
A: 

If you're really interested in programming languages, maybe you should take a shot at writing a compiler for one. You could make your own language or write a compiler for one that you've already learned.

Russell Leggett
A: 

F-Script could be a quick jump into Objective-C (oups, Mac only)

epatel
+1  A: 

I would suggest either Python or Scheme for their ability to expose you to metaprogramming concepts. Programming is about more than just slinging together C or Perl code to get the computer from point A to point B -- if you want to be able to build flexible, general solutions to problems then you'll need to be able to think about what your program is doing at a higher level.

JP Lodine
+3  A: 

Scala is gaining a lot of respect lately.

  • integrates OO with functional programming
  • statically typed without the burden of verbosity
  • extensible, scalable, good for DSL
  • native XML support
  • Erlang-style concurrency support
  • runs on JVM, fully interoperable with Java
Interesting. Is there a proven app some where. Do Scala really scale?
Flinkman
A: 

Pure Data!

artificialidiot
A: 

Either Haskell or Scala, for they have really powerful type systems that are not found elsewhere.

Daniel
A: 

Maybe the semantic web? It is not really a programming language but it causes you to rethink a lot of things.

tuinstoel
A: 

How about factor? (http://factorcode.org/)

Christopher Mahan