Results 1 to 8 of 8

Thread: Programing Language?

  1. #1

    Default Programing Language?

    So I'm a sophomore in college now and I still have no idea what I want to do for a living. After a few years of just thinking my profession will fall out of the sky and hit me on the head, I've determined it's time to take action. I'm going to start what I've come to call "Aggressive Sampling", meaning I'm going to figure out what I want to do by really getting into/learning about some of the things I might be interested in before I have to declare a major in two semesters.

    One area of interest for me is programming. I've dabbled a bit in C++ in the past, and I've recently picked up a C book. After reading a couple books and trolling on forums, I'm even more confused that when I started about which language I should learn.

    I was thinking C at first because it's supposedly fairly easy to become (comparitively) competent in. Also, a lot of open source apps I'm into are written in C. But I get the impression that the (is it functional?) model of programing in C is an outdated paridigm. But then again, from what people have said, C++ is an extremely complex language, maybe not suitable for my first.

    Then there's Java. Is that a good choice? Anyway, thanks for any advice in advance!

  2. #2
    ClanLib Developer
    Join Date
    Sep 2006
    Location
    Bergen, Norway
    Posts
    588

    Default

    If your goal is to learn *programming* the language itself doesn't matter much, the same concept goes into most languages. Once you handle one language well, it is normally quite easy to learn the next.

    Perhaps C and C++ aren't the easiest languages to start with, as they got some fundamental concepts that can be hard to grasp and get right - pointers especially.

    Java and .NET languages (C# being more like C++ than VB.Net) are maybe an easier place to start, as they try to hide away some of the underlying mechanics like pointers.

    If you are thinking commercially / job wise, I think (without having anything to back this up except looking at job ads), that it is easier to find jobs doing Java or .Net than C++ these days.

  3. #3

    Default

    A small update, the class I'm taking next semester (essentially the basic computer science class) apparently teaches basic C and (x86?) assembly. This surprised me, from what I've heard asking around, most beginner classes start with Java.

    Can anyone here reccomend some good resources for getting started learning C and assembly? I'm a bit terrified to go into a class like that cold-turkey(?), so to speak. I've dabbled a bit in the past (in C) but never got a good grasp of what the "big picture" was, if you know what I mean. I learned most of the syntax and then was like.... "ok, now what?" and lost interest and forgot what I had learned in just enough time to pick it up again

  4. #4

    Default

    If you are going to learn C, I would suggest learning C++ instead. C and C++ are VERY similar, C++ just has a lot more advanced OOP based topics.

    This is my FAVORITE tutorial for learning C++, I HIGHLY recommend it. http://www.cplusplus.com/doc/tutorial/

    Learn all the basics and then try messing around with some GDK's or open source applications. Modifying existing source code is a great way to learn.

    Good luck!

  5. #5

    Default

    Don't worry too much about learning the "right" language first. The smarter employers are not looking for people who know language X, Y, or Z; they are looking for someone with solid programming skills and comprehensive knowledge of a decent language. I have seen programmers who have gotten a job without knowing the primary language at the company, but thanks to their intelligence, drive, and experience in other languages they have surpassed the other programmers in the company after a few months of catching up. Just try to learn one language, and then another, and after that learning new languages (depending on the paradigm) will feel fairly trivial.

    Honestly, I would suggest Python because of its combination of ease-of-use and power, but C is also a great start. Java is also a good language to learn, but it is a little overcomplicated compared to the other languages out there, I would even rate it a little more complicated than C++. Giving you easier access to more power is going to allow you to get experience in creating real, fully-fledged applications faster. Many CS courses are comprised of creating a bunch of micro-programs to do specific tasks, with some sort of project at the end that only needs to be half-finished to get a passing grade. You have to learn to walk before you can run, but if you don't know how to run when you get out of college, you are going to be in trouble if you are looking for a job.

    CS courses also tend to teach you how to implement systems (sorting algorithms, hashing, etc.) which in the real world have been implemented in a library or as a first-order langauge construct better than 99% of programmers can hope to achieve. It is still useful to really learn the basics, though, if you don't mind taking your time. It will give you a more full perspective that distinguishes an education in CS from training in CS.

    C uses the structured programming paradigm. You can actually implement a barebones OO system using C structs and functions, C++ just provides syntatic sugar, compiler checks, templates and such. This is probably why a lot of purists don't like C++; a lot of the features feel tacked-on when you have seen them implemented better in other languages.

    The Wizard book (http://mitpress.mit.edu/sicp/) is also a pretty good resource if you really want to go the "old school" route. It teaches Scheme, but it has been "translated" in parts into many languages:

    http://www.codepoetics.com/wiki/inde...ther_languages

    It might be a little more abstract than hands-on stuff that you might be looking for. If you get bored after reading a few pages and want to get to the part where you move the little guy across the screen, then you would probably be better off looking at game development tutorials and deconstructing how the tutorial programs work.

    I am giving a sort of conflicting message, so I guess ultimately what I want to say is: to get a full education, you should learn the basics; you should at least write a few programs where you sort an array, manage some memory, and fiddle around with individual bits. However, this is not enough, you should also create some sort of real-world application or series of applications (yes, games count of course) to get experience in developing large, complete, polished applications. You are also probably going to have more fun initially if you avoid the basics and just get a hold of concepts like 'variables' and 'functions' and 'classes' in a simple language like Python, in the process of implementing a game.

    Finally (wow, I'm just rambling now), making games in Novashell is a very sensible way of getting your feet wet! Compared to a lot of other engines, it's very script-heavy, which means that some of the more basic stuff has to be managed in Lua code rather than through some GUI. It is not enough, however, to really learn how to program.

  6. #6

    Default

    Thanks a lot for all your responses, they've been very helpful. I've completed my first semester after changing my major to MIS (Managment Information Systems - business degree with computing focus... was scared off from all the math required for a CS degree).

    The problem for me is that for my taste, there isn't nearly computing involved in this degree I took one course called "Introduction to Architectures and Programming" ( text was "Introduction to Computer Architecture and Programming" by Zeltman (my professor), Patt, and Patel.

    I LOVED this course and the book. It was very well paced and I learned more than my entire last semester of courses combined. Unfortunately, for the foreseeable future, (a year or so) I must take boring courses like accounting, management, etc. I'm really hungry for more knowledge about what goes on inside of the computer, especially the hardware and the operating system.

    Can anyone recommend a good (and relatively accessible and digestable) book on either or both of those topics?

  7. #7

    Default

    Sorry, DP......

  8. #8

    Default

    Well, one thing I would note is, you really ought to try to get more comfortable with the math. When you break down a software algorithm far enough, you end up with a lot of math. That's why computer science touches on it so deeply; it's pretty tightly wed to a lot of the theory.

    But if you want to go deeper, one option is The Art Of Assembly Language.

    http://homepage.mac.com/randyhyde/we...edu/index.html

    Unlike what you're typically going to find elsewhere, this is actually a treatment of assembly that is easy to understand and informative to a relatively new programmer, and he makes use of his own version of assembly he calls HLA -- high level assembly.

    I'm not advocating the use of assembly over C/C++; as with all things, a tool must be used at the right time or it will make your life more difficult (and those of your peers!), but the contents of his book are rather interesting, and may help you with what you want to understand.

    (No, seriously, don't use assembly outside of an educational context)

Similar Threads

  1. how does clanlib support other language?
    By gison in forum Official ClanLib SDK Forums
    Replies: 2
    Last Post: 06-06-2007, 02:32 AM
  2. What programming language what DINK written in?
    By in forum Dink Smallwood HD
    Replies: 1
    Last Post: 12-03-2005, 08:00 AM
  3. Funeralquest programing and Integration
    By Deathstalker in forum Funeral Quest
    Replies: 0
    Last Post: 02-20-2003, 02:00 AM

Bookmarks

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •