1. Welcome to the new MacRumors forums. See our announcement and read our FAQ

Want to learn a language... but which?

Discussion in 'Mac Programming' started by GD0X, Dec 19, 2011.

  1. Guest

    I'll be starting college this coming month majoring in Computer Engineering. Regardless of the hardware aspect, I've become fascinated with the software aspect as well. I would love to make an online based OS (like chrome if you will) no matter how unrealistic my expectations are. I've fiddled/looked into with C; not excited about learning it though. I've heard "fun" used numerous times with Python. So, my questions...

    1. What is your personal favorite language in terms of usefulness/satisfaction?
    2. What language should I look toward if I'm interested in web-based programming?
  2. Moderator


    Staff Member

    1. Depends very heavily on what I am trying to do.
    2. JavaScript? ;)

  3. macrumors demi-god


    It really depends on what you want to do. But what don't you like about C?
  4. macrumors 65816


  5. Guest

    This ties in... i mean i can always look on wikipedia, but what language(s) is google created from (not the search engine, but interface actually (not the graphics either))?
    Logically thinking, i would pursue one of those languages.

    As for C itself, ehhh haha. C just appears as a grandfather of languages with newer alternatives with simpler syntaxes. But if im wrong, let me know. I would happily continue learning a language that is still very relevant.
  6. macrumors demi-god


    Learn HTML? PHP? JavaScript? I can't say I know much about website creation, but I'm not sure you have any idea what you even want to do (no offense).

    However, I'd like to point out C is very relevant today.
  7. macrumors 68000


    C can be a challenging first language, as evidenced by several thread expressing confusion about pointers (how lucky we are that **handles have mostly fallen by the wayside). For a person who has good basic understanding about the bits and bobs, it is and excellent tool, but if its concepts prove too frustrating ("Oops, I meant 'fileName' not 'filename'"), a beginner might fail before getting going.
  8. Guest

    lol, you're probably right. alright, generally now, assumung i can do what i want with most languages, what causes language 1 to be more suited to task 1 rathern than language 2?
  9. macrumors 65816


    Sometimes is the philosophical underpinning of the language (eg class-based objects vs prototype-based objects, functional vs procedural). Sometimes it's the libraries around that language (more libraries = less code you need to write). Often it's just that programmer A knows language 1 and so can do task 1 in it, even if language 2 would have been theoretically more suited to the task.

    But really, the programming language just gets you to the base camp of the Mt Everest you're about to climb.

    I know how some English words and I know some English grammar, but is that good enough to write a novel? No, writing a novel is higher-level skill than just knowing English.

    The same is true with programming. Knowing a programming language is just the beginning. The greater challenge is developing the skills on how to actually a language (any language) to construct a program that does what you want it to do.

    Just pick a language, and get started. I'd suggest Java. There lots of resources on the net; it can be used in clients, servers, mobile devices, and in web browsers; there's a vast body of libraries; it doesn't have too many pitfalls.

    BTW My personal favourite for "fun" programming in Ruby.
  10. Mac_Max, Dec 20, 2011
    Last edited: Dec 20, 2011

    macrumors 6502

    Maybe there's something wrong with me, C++ is my fun language :D.

    C, C++, Java, Objective C, C#, and other related languages are always handy to learn. Java is common in schools so if you learn the syntax to one you can easily pick up another.
  11. macrumors 604


    There IS something wrong with you! :p

    I myself cannot escape the C languages (C++ is my strongest, followed by Objective-C and C). x86 Assembler can be fun (I don't use it much but I am familiar with it).
  12. Moderator


    Staff Member

    If contemplating a trip to Paris, France. Would you want to learn some Latin, Spanish, Creole or French?

    For Paris, Texas. Would you learn German, Dutch or English?

    All are useful and with work will get you to be understood....

    It still sounds to me that you are interested in stuff that runs client side in a browser like most of Google Apps' UI. As I said before Javascript and HTML seem like a good place to start.

    Read/watch this series: http://hackaday.com/2011/01/26/learn-to-code-at-lifehacker/

  13. macrumors member

    Please don't take offense, this is meant to be purely constructive criticism.

    Your question is a bit like asking "If I want to be a mechanical engineer, should I start out learning how to use regular screwdrivers, Philips, Torx, or hammers?"

    Each language is just one kind of tool that you use to build computer software. A programmer can be competent in one or many languages just like a carpenter can be skilled with one or many tools. Being an engineer is a lot more than just knowing how to use the tools.

    A computer engineer needs to know how things operate at the lowest levels of hardware, things like CPU registers and memory pages. You should be able to look at code from almost any programming language and have a solid grasp of what is happening under the hood to make these different language constructs work.

    If your goal is to become a computer engineer, and you've never done any significant programming before, I think the best language to start with is C, because C is as reasonably close to bare metal as you can get without going to assembly language (which is specific to one computer architecture). For someone who already had some programming experience, I would actually start them off with assembly language as soon as possible. The reason is that you will quickly come to understand what the code is actually doing at the hardware level, rather than the levels of abstraction you get with interpreted or object oriented languages that tend to hide these details.

    C and assembly happen to be really important for designing & developing computer hardware and embedded devices too.

    If you're not interested in going that deep and you'd just like to stick to web development, then you're looking at being a web developer or programmer, not a computer engineer. In that case it's fine to stick to web-based languages like JavaScript, PHP, etc. since you'll be using those languages constantly in web development, where it is not so important to know what the hardware is doing under the hood.

    Just my 2 bits.
  14. macrumors 68030


    Pig Latin is probably the easiest language to learn. :D
  15. macrumors 603

    Learn more than one programming language. Good programmers are often reasonably fluent in several. Learn enough languages to allow you to do both some low level and high level coding.
  16. macrumors 6502

    I think there's definitely value to learning a language before starting your course - and it almost doesn't matter what language; what you want to be picking up is the logic (if/then/else, and/or, etc) principals which are common across all computer languages, but that coders forget the rest of the planet doesn't really 'get'

    For that reason I'd stick to something simplish - you've got enough to worry about. So HTML + javascript, PHP, Ruby on Rails - that sort of thing

    Leave the rocket science for the course - you don't wan tho scare yourself off before you even get there ..
  17. macrumors 68040

    Compared to this task, learning a language is the easy part.
  18. Guest

    thanks a ton guys! Learning a language is just going to be a hobby. It seems rather unanimous that I should start with Javascript for my online based programming?

    I'm only asking since most of the online forums I browse through give mixed opinions; i've always liked the community here at MR.

    Another... pros/cons of learning high vs low level...
  19. macrumors 6502

  20. macrumors demi-god


    If you're actually going into "computer engineering" (don't know exactly what this means, it varies a lot from school to school), you'd probably want to start getting familiar with C. But I guess if client side web programming is what you want to dabble in right now, I think JavaScript is what you're looking for.

    Learning low-level languages will help you understand what precisely is happening in the hardware under all those layers of abstraction, which is (IMHO) pretty important if you're going to do any kind of sophisticated programming.
  21. macrumors 68030

    Amazing Iceman

    The following is just a personal opinion (take it or leave it):

    I would suggest don't waste your money by going into College for a full career.
    Instead, learn a useful skill. Why not start with iOS Programming?
    Stanford University offers the courses on iTunes University. Same quality teaching for free; then it depends on you how much you are willing to learn.
    Wasting thousands of dollars in this economy just to have a diploma may no longer make sense. If you can afford it, great!
    You could start making lots of money after just a few months of intensive studying.

    Check out this link: http://michaelrobertson.com/archive.php?minute_id=348

    And this one: http://blogs.reuters.com/reuters-money/2011/09/15/is-college-worth-it/

    And yet another one: http://www.time.com/time/interactive/0,31813,2072670,00.html

    I have met people with professional degrees working on simple jobs, because they could not get hired in the profession (Lawyers, engineers, architects). Well, that also depends on where you live.
    And this is not a decision that should be taken lightly, so take your time and analyze the pros and cons of it.
  22. macrumors demi-god


    It is my humble opinion that a college education is more than just a path to a job by way of a degree. A broad education in fields outside of your chosen major serves to enrich your world and help to foment critical thinking on all fronts. By interacting with your peers and understanding how others think about all manner of things, you might find yourself better equipped to live and work in society.

    But I'm biased.
  23. macrumors 68030

    Amazing Iceman

    The angle you present makes sense. Peer interaction and mutual understanding was something that happened naturally in the past. Nowadays people are more closed, sort of "in a bubble" and any interaction is limited to people of the same age. That's not beneficial. People need to learn to interact and try to get along with people of all ages, any race, nationality, etc.

    And hanging at bars and nightclubs doesn't count as peer interaction in the sense we are referring to.

    All these other fields could also be learned by reading books and using the internet as a source for knowledge, instead of having to sit and listen to a professor talk. Humanities, Social Studies and many other topics are also available in iTunes University and books and some websites.

    To learn about other people, you have to think outside your 'self'. Pay attention to how others act and behave, and learn to follow and to lead.

    To many, college means partying, getting drunk and living a crazy life without parental control, something that could bring serious problems too.

    In reality there are two contrasting sides to consider.
  24. macrumors 6502a


    If you're going into a college programming program, C is important to learn. As for a more fun, exciting language, I think Python is great. It's very flexible and is a gentler introduction to the basic programming concepts.
  25. macrumors 68040

    In reality there are many more than two (not necessarily contrasting) sides to consider.

Share This Page