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

Choosing a suitable language to learn

Options
  • 07-12-2014 11:42pm
    #1
    Registered Users Posts: 1,050 ✭✭✭


    Hey,

    so ive just finished first comp science and did python. Im not exactly bad at python,im doing okay.
    I recently started working on the project euler problems, as i actually really like that sort of computers maths combo. Anyway i've done a few questions using the standard library,found some modules that makes some difficult stuff really easy, and I want to add some tools to my currently limited toolbox for doing these problems.

    So im on linux, dont have money for not free applications.
    I can do python, R and have 1 or 2 number modules for python that i use.

    What languages or application do you guys recommend to learn a bit of to increase my options? Something thats kinda math based maybe and not extremely difficult in syntax,that would be useful for the project euler type questions.


Comments

  • Registered Users Posts: 586 ✭✭✭Aswerty


    Python and R are some of the most suited languages to doing Project Euler. Other languages in the same vein that come to mind are Julia and Octave. Octave being the GPL equivalent to MatLab.

    Considering you're a year into a comp science course I think you'd be better off gaining more familiarity with languages you already know than wasting time learning new syntax' and environments. And if you are going to plough ahead with a new language you should learn one disimilar to the ones you already know.


  • Registered Users Posts: 1,050 ✭✭✭EmcD123


    I'm still working on python, just wondering if theres anything cool out there toadd to what i have. Python has been working well so far on the problems but i'd like an idea of where to go next really.Even just the names of some of the most worthwhile python libraries for learning next would be good.


  • Moderators, Computer Games Moderators, Technology & Internet Moderators Posts: 19,240 Mod ✭✭✭✭L.Jenkins


    I find Python to be more on the procedural side when it comes to development languages. If you've not had much difficulty with Python though, then I would suggest Perl.

    You also have the option of going down the route of C or C++, which should have no problems handling Euler based problems.


  • Registered Users Posts: 1,050 ✭✭✭EmcD123


    Itzy wrote: »
    I find Python to be more on the procedural side when it comes to development languages. If you've not had much difficulty with Python though, then I would suggest Perl.

    You also have the option of going down the route of C or C++, which should have no problems handling Euler based problems.
    I'm going to learn C eventually but i'd like to hold off on that for as long as i can as its so syntax heavy and it would be too much.
    Whats perl like compared to python, what are the advantages of it? Its not one ive ever heard people talking about.


  • Moderators, Computer Games Moderators, Technology & Internet Moderators Posts: 19,240 Mod ✭✭✭✭L.Jenkins


    It's no more difficult to learn than Python and has decent Math Modules https://www.perl.org/ I found the Perl site after a quick search and it would have all you need to get started.


  • Advertisement
  • Registered Users Posts: 1,050 ✭✭✭EmcD123


    Perl seems like an older less structured version of python from a quick glance on the internet. Im not sure its what im looking for.


  • Registered Users Posts: 586 ✭✭✭Aswerty


    EmcD123 wrote: »
    I'm going to learn C eventually but i'd like to hold off on that for as long as i can as its so syntax heavy and it would be too much.
    Whats perl like compared to python, what are the advantages of it? Its not one ive ever heard people talking about.

    I've never heard C being described as being syntax heavy. If you are going to learn it in your course then it'd make sense to leave off it until then. It is a great language for learning important concepts such as how reference types work and how memory management is done manually.

    I'm finding it difficult to understand what you want. You asked for languages akin to Python and R but you've now decided to stick with Python? Which isn't a bad thing at your level.

    Typically when someone wants to learn a new language it is to improve their knowledge of programming and they will select a language that introduces new concepts to them (or old concepts in new ways). This will typically mean that they learn a language that contains one or more of the following concepts:
    • Functional programming (e.g. Haskell, F#)
    • Dynamic/static typing (e.g. Python/Javascript for dynamic and C#/Java for static)
    • Memory management (e.g. C or C++)
    • Reference types/pointers (e.g. C or C++)
    • Scripting (e.g. Python, Bash)
    • Web development (e.g. JavaScript, PHP)
    • Objected oriented programming (e.g. Java, C++, Python, C#, and a million others)
    • What is happening at the machine level (e.g. assembly, Java byte code, the .NET interpreted language)
    • Parallel processing (e.g. golang)
    • Distributed systems (e.g. Erlang)
    • Virtual machines and byte code (e.g. .NET languages, JVM languages, Erlang VM languages)
    • etc...
    There are languages which are well suited to specific problems either by design or circumstance. You use R which was designed for the domain of Mathematics, Octave and Julia were also built for this domain. Python was not but it has a well developed set of libraries that makes it very good for heavily math based programming. It is also a scripting language which even more so makes it suitable for such a domain. Languages that were built for specific domains include VHDL for electronics design and AWK for text processing.

    If you want to just improve your Python competency then your best off selecting a project and working on that. At the moment your working on Project Euler but if you wanted to build a web application (using Django) or a desktop application (using GTK+) this would force you to use the language in a new way. Other things like connecting Python to a database such as PostgreSQL would be useful.


  • Registered Users Posts: 1,050 ✭✭✭EmcD123


    Aswerty wrote: »
    I've never heard C being described as being syntax heavy. If you are going to learn it in your course then it'd make sense to leave off it until then. It is a great language for learning important concepts such as how reference types work and how memory management is done manually.

    I'm finding it difficult to understand what you want. You asked for languages akin to Python and R but you've now decided to stick with Python? Which isn't a bad thing at your level.

    Typically when someone wants to learn a new language it is to improve their knowledge of programming and they will select a language that introduces new concepts to them (or old concepts in new ways). This will typically mean that they learn a language that contains one or more of the following concepts:
    • Functional programming (e.g. Haskell, F#)
    • Dynamic/static typing (e.g. Python/Javascript for dynamic and C#/Java for static)
    • Memory management (e.g. C or C++)
    • Reference types/pointers (e.g. C or C++)
    • Scripting (e.g. Python, Bash)
    • Web development (e.g. JavaScript, PHP)
    • Objected oriented programming (e.g. Java, C++, Python, C#, and a million others)
    • What is happening at the machine level (e.g. assembly, Java byte code, the .NET interpreted language)
    • Parallel processing (e.g. golang)
    • Distributed systems (e.g. Erlang)
    • Virtual machines and byte code (e.g. .NET languages, JVM languages, Erlang VM languages)
    • etc...
    There are languages which are well suited to specific problems either by design or circumstance. You use R which was designed for the domain of Mathematics, Octave and Julia were also built for this domain. Python was not but it has a well developed set of libraries that makes it very good for heavily math based programming. It is also a scripting language which even more so makes it suitable for such a domain. Languages that were built for specific domains include VHDL for electronics design and AWK for text processing.

    If you want to just improve your Python competency then your best off selecting a project and working on that. At the moment your working on Project Euler but if you wanted to build a web application (using Django) or a desktop application (using GTK+) this would force you to use the language in a new way. Other things like connecting Python to a database such as PostgreSQL would be useful.
    ya i think i explained myself badly. python and R are completely different things and when i said im looking for something new to learn i mean something that is pretty different to python.something that works differently and does different stuff. as a broadening my skills thing instead of just learning something thats really similar to what i already know.I had a look at octave this morning,and might have a quick attempt at that over christmas to see what its all about


  • Registered Users Posts: 6,177 ✭✭✭Talisman


    This is not too dissimilar to your query in October: choosing a language for learning

    The answers you received then are equally valid now.


  • Registered Users Posts: 1,050 ✭✭✭EmcD123


    Talisman wrote: »
    This is not too dissimilar to your query in October: choosing a language for learning

    The answers you received then are equally valid now.
    Yes very similar. I suppose this time i just have an idea of what i want to use one for instead of just general programming and wanted to see is there anything interesting out there that is specifically for this kind of maths type things.,that isnt too hard to pick up.


  • Advertisement
  • Registered Users Posts: 1,050 ✭✭✭EmcD123


    Talisman wrote: »
    This is not too dissimilar to your query in October: choosing a language for learning

    The answers you received then are equally valid now.
    I was wondering actually if you know anything about haskell, i know a few people who sing it praises all the time, Would that be something worth trying, it looks completely different in syntax and ideas than i've ever seen before though?


  • Registered Users Posts: 6,177 ✭✭✭Talisman


    Haskell would be a good language for maths, it's a functional language so it's completely different to what you've done before. If you're looking for a free resources to pick it up there are plenty online. Check out Learn You a Haskell for Great Good! and the C9 Lectures Functional Programming Fundamentals.


  • Registered Users Posts: 1,050 ✭✭✭EmcD123


    Talisman wrote: »
    Haskell would be a good language for maths, it's a functional language so it's completely different to what you've done before. If you're looking for a free resources to pick it up there are plenty online. Check out Learn You a Haskell for Great Good! and the C9 Lectures Functional Programming Fundamentals.
    I think i'll go with that then,i have a book call the road to logic and programming and maths with haskell(or something like that)from the library already


  • Registered Users Posts: 586 ✭✭✭Aswerty


    Yeah Learn You a Haskell for Great Good seems like a great resource. I started learning Haskell with it and I really enjoyed it but gave up due to not having the time.


Advertisement