Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

Language Advice

  • 21-05-2011 2:55pm
    #1
    Registered Users, Registered Users 2 Posts: 7,231 ✭✭✭


    I'm on my summer holidays now and I've chipping away trying to improve my Java (Second year CS whose only ever really programmed in Java) and that has been somewhat satisfying, but I want to do something else with my time (And I have a university library at my disposal so, not short on resources).

    Basically I want to learn a new language, but I'm not sure which one to go with. I've been looking at:
    • Python - It looks fun to code in.
    • Perl - It looks useful for pretty much everything.
    • C - It's something that I'll have to learn sooner or later (Two modules use it next year).
    • A lisp (Scheme or Common Lisp) - Looks really fun to code in.

    I'm not really sure what I'm asking, could people give me a bit of advice based on their experience with any of the above, detailing maybe user friendliness, time it took to get to a working level with it, general info.

    Thanks
    Conor


Comments

  • Registered Users, Registered Users 2 Posts: 5,246 ✭✭✭conor.hogan.2


    C, especially since you will be using it next year.

    Python is very nice to work with, but work on C. Be careful to learn good C, it is very easy to learn perfectly good C but with bad practices that will make learning python and other languages harder.


  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    C imo. Even though it will bite you in the ass, C teaches you to be precise. Understanding Basic Algorithms/Complexity is also essential. I am no Algorithms guru by any stretch, but it's good to know the complexity of say - the various sorting algorithms. Know why the bubble sort is horrible when N is large. Just the basics even. Knowing how to measure the efficiency of an algorithm is good practice, even if you don't do it day to day. Now, go off and implement the quicksort in C, then python. You will learn a lang is just a means of expressing a concrete idea. Don't get too hung up on langs. Read this for today: www.csi.ucd.ie/staff/jcarthy/home/FirstYear/Comp1001-L13.pdf And remember, never rush into things. Concepts are more important than lines of code. You want O(n log n) when feasible. Never judge your ability by how many lines you write. Seriously, learn to write less code. Java teaches you to write quite alot. Reverse this. Also, use recursion very wisely. Pointers are HELL at first, but they will grow on you:p

    /rant


  • Registered Users, Registered Users 2 Posts: 7,231 ✭✭✭Fad


    Naikon wrote: »
    C imo. Even though it will bite you in the ass, C teaches you to be precise. Understanding Basic Algorithms/Complexity is also essential. I am no Algorithms guru by any stretch, but it's good to know the complexity of say - the various sorting algorithms. Know why the bubble sort is horrible when N is large. Just the basics even. Knowing how to measure the efficiency of an algorithm is good practice, even if you don't do it day to day. Now, go off and implement the quicksort in C, then python. You will learn a lang is just a means of expressing a concrete idea. Don't get too hung up on langs:p Read this for today: www.csi.ucd.ie/staff/jcarthy/home/FirstYear/Comp1001-L13.pdf And remember, never rush into things. Concepts are more important than lines of code. You want O(n log n) when feasible. Never judge your ability by how many lines you write. Less code, the better.

    I have a decent grasp of Big-Oh and algorithms (Searching/Sorting/and so on are another thing I have to go over, over the summer!), but that sounds like a decent idea, try and get a decent feel of languages by implementing something like quicksort.

    I might well end up going with C, noodling around with Linux in general atm (Ubuntu until I learn enough to be comfortable with changing to slighty a less friendly distro), also have K&H + the Unix Programming environment on hand so I have two decent resources ready for me.

    My only concern with C is the fact its syntax is similar to Java's, and I wouldn't mind learning something a bit different, but the change from an OOP language to C might be enough to appease me.


  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    Fad wrote: »
    I have a decent grasp of Big-Oh and algorithms (Searching/Sorting/and so on are another thing I have to go over, over the summer!), but that sounds like a decent idea, try and get a decent feel of languages by implementing something like quicksort.

    I might well end up going with C, noodling around with Linux in general atm (Ubuntu until I learn enough to be comfortable with changing to slighty a less friendly distro), also have K&H + the Unix Programming environment on hand so I have two decent resources ready for me.

    My only concern with C is the fact its syntax is similar to Java's, and I wouldn't mind learning something a bit different, but the change from an OOP language to C might be enough to appease me.

    Ubuntu is a great environment to learn programming in. Getting python is only a few clicks away. All you have to do to get the C compiler and build tools is a simple "sudo apt-get install build-essential" Done. Pick any random algorithm, then implement in python AND C. Use the time command as a minimum to compare the running time. Compare each implementation. Crude, but you will learn quite alot by actually implementing something tangible. Would be nice to write a report on imo. You know the basics, which is good. They don't call Linux "the programmers operating system" for nothing:P


  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    Fad wrote: »
    My only concern with C is the fact its syntax is similar to Java's, and I wouldn't mind learning something a bit different, but the change from an OOP language to C might be enough to appease me.

    C may be superficially similar to Java, but it's really another world imo. Pointers for instance are great for quickly traversing large data structures. You don't even have pass by reference in Java! That is a big limitation. You could learn lisp or some other functional lang too. Once fact remains. C is the native lang of UNIX. If you want to get to grips with UNIX concepts/programming, C is the best choice. Good luck with your decision OP. Buffer overflows and "segmentation fault" will become familiar in no time!


  • Advertisement
  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    Fad wrote: »
    (Ubuntu until I learn enough to be comfortable with changing to slighty a less friendly distro)

    Lose this mentality. I used to suffer from it too. Ubuntu is perfect even if it's "for noobs". You can do everything in Ubuntu that you could do in something like Gentoo. Ubuntu is as deep or as shallow as you choose. Gentoo is only used to scare noobs away. Compiling your entire userland is just a waste of electricity for the most part. If you really want to learn the differences, try Ubuntu then Free/Net/OpenBSD or even Solaris. You won't gain much by moving to Arch or Gentoo. Linux is Linux imo.


  • Registered Users, Registered Users 2 Posts: 7,231 ✭✭✭Fad


    Naikon wrote: »
    Lost this mentality. I used to suffer from it too. Ubuntu is perfect even if it's "for noobs". You can do everything in Ubuntu that you could do in something like Gentoo. Ubuntu is as deep or as shallow as you choose. Gentoo is only used to scare noobs away. Compiling your entire userland is just a waste of electricity for the most part. If you really want to learn the differences, try Ubuntu then Free/Net/OpenBSD or even Solaris. You won't gain much by moving to Arch or Gentoo. Linux is Linux imo.

    It's nothing to do with elitism tbh, I just dont particularly like Ubuntu (I'm an OSX head* so I'm hard to please >_>), I'm just happy messing around with it for the moment until I'm comfortable with the command line.

    I think it's safe to say I will never go near Gentoo, because frankly, I have better things to be doing with my life! Would like to eventually mess around with a BSD at some point.


    *Have to do a fresh install soon though because the macbook is so full of shíte after 3 years..... That's neither here nor there


  • Moderators, Technology & Internet Moderators Posts: 1,336 Mod ✭✭✭✭croo


    One language not on your list and I add it just as a curiosity as you are unlikely to come across it for work these days. Back in the days prior to objects I was thought it as an introduction to object orientation... project work would eventually be in c++ but it was thought this was so similar to c developers would fall back into their old traits and just code in c. Anyway the language was smalltalk and ubuntu includes a variant in their repository called "Squeak" - once you get to grips with it (and I doubt it will take too long) have a look at "Seaside" which is a webserver implemented in squeak. Building web apps in seaside is like nothing else I saw ..you effectively customise the webserver itself to build the app! Anyway I think both are very interesting projects.


  • Registered Users, Registered Users 2 Posts: 7,231 ✭✭✭Fad


    croo wrote: »
    One language not on your list and I add it just as a curiosity as you are unlikely to come across it for work these days. Back in the days prior to objects I was thought it as an introduction to object orientation... project work would eventually be in c++ but it was thought this was so similar to c developers would fall back into their old traits and just code in c. Anyway the language was smalltalk and ubuntu includes a variant in their repository called "Squeak" - once you get to grips with it (and I doubt it will take too long) have a look at "Seaside" which is a webserver implemented in squeak. Building web apps in seaside is like nothing else I saw ..you effectively customise the webserver itself to build the app! Anyway I think both are very interesting projects.

    That sounds really interesting, I'll keep it in mind.

    This doesn't really just extend to the summer, I want to have a good few languages that I'm familiar with (And at least one I'm completely fluent with) by the end of my degree (And the learning process will continue forever! I enjoy learning new things!)

    (Ruby isn't on the list because I'm using/starting it in a module next year and I'll give it a look over in the run up to college starting in September, in case anyone mentions it)


  • Closed Accounts Posts: 4,564 ✭✭✭Naikon


    Fad wrote: »
    It's nothing to do with elitism tbh, I just dont particularly like Ubuntu (I'm an OSX head* so I'm hard to please >_>), I'm just happy messing around with it for the moment until I'm comfortable with the command line.

    I think it's safe to say I will never go near Gentoo, because frankly, I have better things to be doing with my life! Would like to eventually mess around with a BSD at some point.


    *Have to do a fresh install soon though because the macbook is so full of shíte after 3 years..... That's neither here nor there

    Fair enough, Ubuntu isn't going in a great direction these days I must admit. The Unity interface is horrible. Good thing Kubuntu and Xubuntu are still around. Not that you can't replace Unity of course. Haskell looks interesting, but I don't have time to invest in it at the moment. Have a look into that too. Another perspective.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 5,246 ✭✭✭conor.hogan.2


    Look at them all, learn as many (but learn them well) as you can. But as someone said don't get too hung up on a language, it is just a tool to get things done.

    Excellent link Naikon, well I'm more interested in the site as a whole.


  • Closed Accounts Posts: 5,082 ✭✭✭Pygmalion


    Fad wrote: »
    I think it's safe to say I will never go near Gentoo, because frankly, I have better things to be doing with my life! Would like to eventually mess around with a BSD at some point.

    Just a heads up, the BSDs can be more awkward than Gentoo in a lot of ways, so make sure you have a good bit of time to play around with it and aren't expecting to get much done on the computer for a while when you install it.

    Not to say you shouldn't mess around with one, it's worth using it just for the sake of seeing what's the same and what's different compared to Linux IMO.
    They have a pretty interesting way of dealing with filesystems/disks compared to Linux, for example.


  • Registered Users, Registered Users 2 Posts: 5,246 ✭✭✭conor.hogan.2


    I havent used Gentoo, but freeBSD is very odd if you come from osx or windows and even after using ubuntu and some other linuxes on and off for a while.


  • Closed Accounts Posts: 5,482 ✭✭✭Kidchameleon


    Make a game in C. Use SDL (Google it) You'll learn lots and it'll be a nice change. Plus it'll get you ready for the C part of your course.


Advertisement