Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

New programming language suggestions

by blazar (Canon)
on Sep 14, 2005 at 13:45 UTC ( #491865=perlquestion: print w/ replies, xml ) Need Help??
blazar has asked for the wisdom of the Perl Monks concerning the following question:

I hope this won't sound as heresy. I would like to learn at least another programming language besides Perl. The problem is that I think that sticking with just one programming language is too restrictive. I may still be using Perl as the "main" one, nay it's highly probable that I'd do in any case, but I want a somewhat broader perspective.

As far as Perl is concerned, it's so powerful that for quite about every programming need of mine I couldn't think of using another language. But just because of its expressive power and flexibility, I wouldn't like to begin taking too much for granted. So it would be just fine to investigate in languages that are less powerful, or differently powerful (whatever that may mean).

OTOH Perl is so eclectic in its multiparadigmatic nature that the risk of developing a somewhat narrow perspective is possibly smaller than if one stuck with many other languages...

I have the impression that Ruby is particularly popular amongst Perl programmers, as you can see e.g. in this thread, but as I wrote above, I'd be rather interested in a language that's quite different from Perl. Oh, and what I know about Python keeps me glad I never messed with it!

Whatever, on the one hand I'm particularly interested in programming language concepts, so chances are that an academic language could be best suited for me; on the other one, I eventually fell in love with Perl and stuck with it because it served me well in practical matters, as you can read here.

As far as my programming paradigm preferences are concerned, even though I haven't received a formal training or education about these issues, it seems I'm particularly keen on functional programming techniques. But then of course, I'm not fanatic about them...

I've tried ML in the form of SML/NJ and I found it intriguing, but all in all I gave up after a few days. Not to say that I won't try my hand at it again. Incidentally, somebody I know told me that the choice of that particular ML was probably not the best one and suggested that I may want to use Objective Caml instead.

Also, I'm intrigued by RPN languages too, which unlike many people I find to be quite natural as a syntax. And in this sense I have a curiosity towards Forth, but from what I could read about it it seems that I have little to do with its typical application areas. I say so, because I've been playing so much with my old HP-28s calculator in the past, and I still think it's quite a fantastic language... (those who know it may be interested in this observation, complete of Larry Wall's reply.)

Last, I may consider trying some language targeted at Parrot; well, of course I'm not talking about Pugs/Perl6 -- I have Pugs and Parrot already installed. I've recently heard about Amber for Parrot, which seems interesting, how 'bout it?

any suggestion?!?

Comment on New programming language suggestions
Re: New programming language suggestions
by chester (Hermit) on Sep 14, 2005 at 14:01 UTC
    Haskell may be for you. It's a pure functional language. Certainly interesting in an academic sense. I had to write Pong in Haskell in a class I took. It was entirely different from how I'd ever thought of programming. Different, as in "I want to jam something sharp into my brain", in my case.
Re: New programming language suggestions
by samizdat (Vicar) on Sep 14, 2005 at 14:06 UTC
    Whee! Time for another food fight!

    Try SNOBOL for laughs, it will make you think Perl RegExes are fun light reading.

    {long pause}

    Okay, next idea. FORTH is the genesis for the OpenBOOT initiative which underlies some recent system boot processes including Sun & FreeBSD. Imagine a coding system which can give you a complete interactive console-based IDE in 2K bytes booting your entire modern PC!

    The suggestion has been made many times, but I'll echo it. Learn C and make and study the source code of FreeBSD or Linux... so much to learn!!!
      Okay, next idea. FORTH is the genesis for the OpenBOOT initiative which underlies some recent system boot processes including Sun & FreeBSD. Imagine a coding system which can give you a complete interactive console-based IDE in 2K bytes booting your entire modern PC!
      Indeed a friend of mine asked me if I knew any (thing about) FORTH, since he discovered it is at the basis of the boot system of his mac. I'm not sure if it's exactly the same thing as you're talking about, but it sounds like it is. I'll check your link ASAP.
      The suggestion has been made many times, but I'll echo it. Learn C and make and study the source code of FreeBSD or Linux... so much to learn!!!
      Oh C... I thought my fist post was quite comprehensive, and I forgot nothing the less than C!! Well, I used to know C, and C++, but it's over a decade I don't touch them any more. Indeed I do want to re-gain at least some confidence with them, but one of the main reasons why I want to is to learn XS programming. So this is a separate issue...
        Mac OS X is Free/NetBSD wrapped around a Carnegie-Mellon MACH kernel. Yes, it is OpenBoot.
Re: New programming language suggestions
by jdporter (Canon) on Sep 14, 2005 at 14:13 UTC

    Ditto anyone who said ocaml or haskell. :-)

    But, seriously, if you don't already know C, I'd learn that first. It is extremely useful to have a good understanding of how real (vs. virtual) machines work, to get close to the metal, as they say. C will give you that.

    Then I'd learn Java.

    Sure, both those languages have syntax similar to each other and Perl... but syntax is the least of your worries. The conceptual model behind each of them is significantly different, yet not so exotic as to be very difficult to comprehend.

      But, seriously, if you don't already know C, I'd learn that first. It is extremely useful to have a good understanding of how real (vs. virtual) machines work, to get close to the metal, as they say. C will give you that.
      I know some C, as I also wrote here I plainly forgot mentioning it in New programming language suggestions.
      Then I'd learn Java.
      I don't like Java. More precisely there are some aspects of it that I like, but there are more that I don't like. All in all I think I'd better start over again with C++ and then switching to Java shouldn't be so much of a shock. Except for the different conceptual model behind them to which you refer with your insightful and somewhat unexpected comment.
Re: New programming language suggestions
by rruiz (Monk) on Sep 14, 2005 at 14:28 UTC

    This other node has also a lot of good sugestions.

    HTH, God bless you
    rruiz

Re: New programming language suggestions
by 5mi11er (Deacon) on Sep 14, 2005 at 14:36 UTC
    Back in college around, oh, '90, I took a class on the Icon programming language. For me at the time, it was quite eye opening that a language could be so powerful yet not very verbose. I'd been mainly doing C upto that point. So, I think it is very probable that my introduction to Icon was somewhat responsible for my getting sucked into perl as quickly and as fully as I did.

    So, I'm not sure if it is different enough from C or perl as you would like, but it was partially derived from the above mentioned SNOBOL, so although it looks similar (to c and perl), I think it has enough differences that you might at least find it interesting.

    -Scott

    Update: made it more clear as to what Icon looked similar to.

      Icon was Ralph Griswold's next crack at a language after SNOBOL5. He was a prof at U of Arizona when I was there and one of his students was the teacher of a comparative languages course and he threw SNOBOL at us. I was a frosh and this was a 272 course, but comparing Pascal to LISP to APL to SNOBOL to CDC6400 assembler was awesome. Quite the brain-stretcher, it {SNOBOL} was all about pattern matching. Many functional and logic programming languages take elements from SNOBOL, as do RegEx engines.

        comparing Pascal to LISP to APL to SNOBOL to CDC6400 assembler was awesome

        Has a similar 200 level course at my undergrad. The year I took it was quite good. A couple of years afterwords, a new prof took over the course, and to limit the amount of year to year code reuse (ahem), he mixed up the program assignment and the language. For example, instead of coding the missionary and cannibal program in Lisp, he had them do it in Snobol. There was much wailing and gnashing of teeth :-|

        --MidLifeXis

Re: New programming language suggestions
by Anonymous Monk on Sep 14, 2005 at 15:11 UTC
    If you want to learn different language syntax, then Python and Ruby are the way to go. If you want to learn more about programming in general, then you should try something different than a object based imperative scripting language. Haskell is different because it is pure (doesn't have side effects), so it can be evaluated lazily. And the execellent static type system is much different than Perl. Prolog is nice, because you mostly write down what the problem is, and the compiler figures out how to solve it. Scheme is wonderful for its minimal syntax, which enables you to really take advantage of programs that write programs (macros).
Re: New programming language suggestions
by japhy (Canon) on Sep 14, 2005 at 15:12 UTC
    I really like Befunge. I haven't done anything with it lately, but it will open you to a whole new dimension of programming. Pun intended. Seriously, it's really fun.

    Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
    How can we ever be the sold short or the cheated, we who for every service have long ago been overpaid? ~~ Meister Eckhart
Re: New programming language suggestions
by gri6507 (Deacon) on Sep 14, 2005 at 16:03 UTC
    Even though C does not meet many of your criteria, I'd say that learning it would probably be most useful (especially down the road). As for more academic languages, I don't think you can get much more theoretical than a Turing machine. There is actually a language called BF (I'll leave the acronym decoding as an exercise for the reader) which implements a Turing machine. I found BF very interesting to learn and understand.
Re: New programming language suggestions
by Ovid (Cardinal) on Sep 14, 2005 at 18:24 UTC

    For something rather radical, try Prolog. It's a logic programming language. As such, instead of telling the computer how to solve a problem, you tell it what the problem looks like and it figures out how to solve it. You can also install my pure Perl Prolog implementation AI-Prolog to get a simple Prolog shell and programming environment.

    Later, you can check out SWI-Prolog for a full-featured implementation. The Amzi! Prolog folks also offer a great (and free) online Prolog tutorial. By the time you're done, you'll have built several Prolog programs and get a good idea of how the language works.

    In fact, one nice thing you'll note is the ability to change the syntax on the fly. That combined with built-in grammars allows you to type in natural English (or whatever your preferred native language is) and still get things done.

    Cheers,
    Ovid

    New address of my CGI Course.

      Seconded, but for a broader reason.

      Learn languages which are not merely procedural. Most of the languages simply describe the way to structure data and manipulate data. Essentially, they lay out the opcodes which the machine will execute in order. Go for something that diverges from that: do things with logical, declarative, inference, numerical, symbolic, even visual languages. At the very least, you'll gain insights on how to express procedural code which solves problems more effectively.

      --
      [ e d @ h a l l e y . c c ]

        I second that too. I have "obviously" (due to my studies) some experience with TeX, and in particular with LaTeX which are markup languages, but to a large extent less "static" than more common *ML ones. I also tried MetaPost to draw some graphs, and I noticed it has some declarative features, e.g. a point can be defined implicitly in terms of the intersection of two straigh lines. Quite a niche application, but interesting indeed...
Re: New programming language suggestions
by rvosa (Curate) on Sep 14, 2005 at 22:14 UTC
    I would like to learn LISP, or in any case eLISP (and finally learn how to use emacs effectively in the process). I don't know anything about either yet, other than that it's "functional programming" and that it involves a lot of parentheses. It looks like quite a different paradigm, so I'm interested in at least wrapping my head around it a bit. Perhaps you will too? Good luck!
Re: New programming language suggestions
by nothingmuch (Priest) on Sep 15, 2005 at 01:51 UTC
    I've been having lots of fun with haskell and forth lately. I'd reccomend looking into them because they encompass a *HUGE* spectrum of compsci concepts - from the highest level functional stuff, down to threaded code compilation, being such elegant and simple languages.

    -nuffin
    zz zZ Z Z #!perl
Re: New programming language suggestions
by holli (Monsignor) on Sep 15, 2005 at 06:51 UTC
    Ook? Ook!


    holli, /regexed monk/
      I knew Ook! but I prefer COW, and I am aware of quite a few other "exotic" languages including, but not limited to HQ9+ and the (far more than) pythonesque Whitespace.
Re: New programming language suggestions
by Mark_UpLanguage (Sexton) on Sep 15, 2005 at 14:24 UTC
    Lisp is a programming language that still has a good support community. It's a different way of thinking and programming and will broaden your horizons about what's really the best tool to use for a job. Additionally I'd say that smalltalk, which has morphed into squeak as a completely OO language. Google for each of these to find starting points and communities of support.
Re: New programming language suggestions
by Gavin (Canon) on Oct 08, 2007 at 17:45 UTC
    Tongue firmly in cheek
    Just found this node today, and thought you may now be looking for a further language to learn.
    May I suggest the following.
    Many people find this too difficult to learn and use a translator .
    You may like to "larn" this to augment your already accomplished linguistic skills!

    A dictionary is at hand if required!
      Many people find this too difficult to learn and use a translator.

      Funny! I must say that one of the links you provided mentions that they are "sometimes wrongly but understandably mistaken for Scots" ("or Irish [...]") Well, I must say that having read Trainspotting in "English" I notice some similarities between its anglicized Scots and this Geordie. Actually, after having finished the book, it was relatively easy to compose some simple phrases (hopefully) in its style. Indeed I remember having written one such remark (link @ GG) in answer to a troll (yeah, yeah, I know) in clpmisc. To quote myself:

      On 4 Sep 2006 14:11:14 -0700, "Skybuck" <skybuck2000@hotmail.com> wrote: [loads ay shite] Oh ma perr wee lassie! Hud ah kent ye wir such a lurvely cunt ah wid've joined yir cyberwar n aw fir sure, likesay. Sae long...

      BTW: you can insert links more easily with PM's shortcuts, e.g. [http://www.geordie.org.uk/|translator] will render as translator.

Re: New programming language suggestions
by Cop on Oct 08, 2007 at 18:30 UTC

    You made it sound like Ruby is close to Perl. The only thing close is the sigil. I would rather say that Ruby is close to Python, Java and C#.

    Want something quite different, Haskell and LISP are in order.

    Want something OO? Learn all of them: SmallTalk, Java, Ruby, C#, C++ and see the different flavors.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://491865]
Approved by marto
Front-paged by monkfan
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (12)
As of 2014-09-18 17:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (120 votes), past polls