Page 2 of 2 FirstFirst 1 2
Results 21 to 34 of 34

Thread: Programming     submit to reddit submit to twitter

  1. #21
    The Wang
    Join Date
    Jun 2006
    Posts
    1,343
    BG Level
    6
    FFXIV Character
    Furt Wangler
    FFXIV Server
    Coeurl
    FFXI Server
    Sylph

    After going through my first year in college, python python python. It may not be very useful but it creates good habits (mainly whitespace and indenting) that should carry over to other languages. After you get the hang of python, move over to java.

    Java will introduce more strictness than python, while introducing you into a more formal looking language. Java is fairly popular even now so if you get good with that, may want to just stick with that for now. After java I'd go to C#(basically java with less rules) and go from there. If you're into web dev stuff start looking into php, asp etc, but start with python IMO. (I know im not an expert but its worked for me and our college seems to think ittl work for others hence switching our CS classes language order.

  2. #22
    Relic Horn
    Join Date
    Oct 2006
    Posts
    3,054
    BG Level
    7
    FFXI Server
    Cerberus
    WoW Realm
    Ravenholdt

    Quote Originally Posted by Maguspk View Post
    I wouldn't take any advice in this thread except for going to school and learning. Learning a language is stupid, you need to learn concepts, that's what makes a good programmer. Languages aren't something you learn and magically program well in they're just a tool to apply the concepts you should understand. You can 'know' C and still right fucking shitty code, this applies for all programming languages, in fact the people recommending C for a beginner are fucking stupid because you won't be using C in anything practical in the near future and you won't need to know half the things you need to know to write good C code very easy and practical language to learn, it is used very widely in most modern companies where people are programming often (like Google, NSA, CIA, etc.)
    You need C for dealing with almost everything embedded. Same with assembly, and in some cases J2EE. Learning the basics in something like assembly or C teaches you to be efficient with code and think outside of the box when it comes to solving a problem.

    I stand by my previous statement because C is a fucking practical language to learn concepts in, because it can be used almost anywhere in industry. Hell, even high level VLSI work is done in C based hardware description languages.

  3. #23
    i'm awesome.
    Join Date
    May 2005
    Posts
    9,218
    BG Level
    8

    This is a philosophy major who wants to 'try out' programming, as of his last reply I am now convinced C is not something he'll ever be using. The recommendations of Java and C++ are the most reasonable, with my personal suggestion being Python. Most likely he'll end up doing something web-related in which case PHP, Ruby, Python or Java make more sense than C. C has it's purpose and it isn't for some beginner who wants to just jump into programming.

    @Furtwangler, I was going to mention how the tabbing forces good clean code styling, I agree.

  4. #24
    Bagel
    Join Date
    Jan 2006
    Posts
    1,428
    BG Level
    6

    Quote Originally Posted by Korietsu View Post
    You need C for dealing with almost everything embedded. Same with assembly, and in some cases J2EE. Learning the basics in something like assembly or C teaches you to be efficient with code and think outside of the box when it comes to solving a problem.
    s.

    Yea, I graduated without ever touching assembly. I don't plan on ever needing to use it. No need to jump into the lowest-level language in order to get a 'feel' for programming.

  5. #25
    Relic Horn
    Join Date
    Oct 2006
    Posts
    3,054
    BG Level
    7
    FFXI Server
    Cerberus
    WoW Realm
    Ravenholdt

    You're not going to be programming in assembly often, its only when you know you can preform something cleanly and its a small task. Its mostly used for debugging along embedded devices.

  6. #26
    E. Body
    Join Date
    Jan 2007
    Posts
    2,103
    BG Level
    7

    Quote Originally Posted by Maguspk View Post
    This is a philosophy major who wants to 'try out' programming, as of his last reply I am now convinced C is not something he'll ever be using. The recommendations of Java and C++ are the most reasonable, with my personal suggestion being Python. Most likely he'll end up doing something web-related in which case PHP, Ruby, Python or Java make more sense than C. C has it's purpose and it isn't for some beginner who wants to just jump into programming.
    Exactly, trying to learn a more difficult language like C right off the bat is not going to be enjoyable at all. Learning something like this on your own (even seeing if it's something you might enjoy) isn't going to be that easy, and to add even more difficulty onto it is just setting yourself up for failure and getting discouraged. Once the OP is comfortable with whatever language he uses to start with (by that I mean someone giving him a medium-sized program to do and being able to complete it on his own) then working with the more difficult languages could be a great experience.

  7. #27
    netz
    Guest

    Pick a language. You really can't go wrong with almost any of the popular languages, but the newer ones such as C#, Python, Ruby, and Java all have large standard libraries that make them more rewarding and less painful to jump into than C or C++, since more things can be accomplished out of the box. They also mask (but definitely, at a lower level, do not eliminate) some of the more complex considerations that you would be forced to make in C/C++. Then, read examples, piece them together and try to understand what's going on. Basically, write shitty code, and see if you enjoy it. Read other people's code, and try to reason about their design choices, and see if you can apply them to code you've written or remember to use them in the next program you write. If you end up lost trying to figure something out, always, always try to use Google to see if someone else had the same/a similar problem. Chances are, this is how you would have discovered stackoverflow.com (use Google to search it), which is a humongous resource for programming questions.

    Also recognize that learning to program is probably also going to come with learning some of the other intricacies, so you'll probably also pick up some rough sysadmin skills and maybe a better understanding of your OS, especially if you're using C or C++ on a UNIX system. If you're doing web apps, chances are you'll also have to learn how to deploy them -- Ruby on Rails and Django (Python framework), for example, each have specific requirements for how they are ran, and their feature set varies a little bit based on their environment and what libraries are available to use. PHP can be a nightmare with everybody having a different installation with a different feature set.

    School nowadays is virtually a requirement to be considered for jobs, but school won't necessarily teach you how to be a good programmer. Writing robust, maintainable code comes with a mix of practice and research, just like many other pursuits in life. To improve your code, you might want to pick up some reading material. Many popular languages have books tailored to showing the best design practices in a language, like Effective Java or Effective C++. For a more general approach to improving programming design, there's also books on design patterns, which will provide you with a set of strategies for solving problems that frequently or semi-frequently show up in programs.

    This is probably pretty far off, but if you're looking to expand your horizons after getting grounded in the realms of procedural and object-oriented programming, consider looking at functional languages such as Haskell, Scala, and F#. Some things you may wish to accomplish might be better expressed in a functional language. You don't need to solve every problem using them -- a Java program may call something you wrote in Scala, and a C# program will enjoy the same flexibility with F#.

    Eventually, if you decide software development is really your thing, you'll probably want to gain some familiarity of topics under the maligned title of "software engineering." A lot of works on the subject are from the management perspective, but they're still typically insightful to read since working as a developer means you're a participant in the whole process. It's definitely not something that many CS programs even attempt to address. For example, you can graduate from my school with a BS in CS without touching the software engineering courses.

  8. #28
    Very Sexy Nerd
    Join Date
    Oct 2005
    Posts
    8,732
    BG Level
    8
    FFXI Server
    Carbuncle

    Gonna rephrase a bit of what others said, but if you just want to try out programming, you should really try out either Ruby or Python. (I personally prefer Ruby)

    They're very easy to use and learn, and very powerful. Once you know one language, and you understand all or at least most of the concepts, learning other languages is easy. The only problem is that Ruby and Python are so good, when you have to write C or Java or whatever, it'll be incredibly painful.

    I personally learned Java first (meh), and then suddenly my OS class had us using C. It was a bit awkward at first since the programs weren't exactly easy, but when you know the concepts, it's just a matter of googling to find out how it may be different in another language.

    Also, I suggest getting VMware or VirtualBox or any other VM type software and install Ubuntu on it, and start getting to know the terminal.

  9. #29
    E. Body
    Join Date
    Jan 2007
    Posts
    2,103
    BG Level
    7

    Quote Originally Posted by netz View Post
    School nowadays is virtually a requirement to be considered for jobs, but school won't necessarily teach you how to be a good programmer. Writing robust, maintainable code comes with a mix of practice and research, just like many other pursuits in life. To improve your code, you might want to pick up some reading material. Many popular languages have books tailored to showing the best design practices in a language, like Effective Java or Effective C++. For a more general approach to improving programming design, there's also books on design patterns, which will provide you with a set of strategies for solving problems that frequently or semi-frequently show up in programs.

    Eventually, if you decide software development is really your thing, you'll probably want to gain some familiarity of topics under the maligned title of "software engineering." A lot of works on the subject are from the management perspective, but they're still typically insightful to read since working as a developer means you're a participant in the whole process. It's definitely not something that many CS programs even attempt to address. For example, you can graduate from my school with a BS in CS without touching the software engineering courses.
    I didn't consider myself a "good" programmer until I had put in a few months at my internship. Programming is just one of those things where you think you may be writing efficient or good code until someone who's had a lot more experience coding takes a look at it. They don't really teach that in the university setting, which is a shame. It's more of a focus on "get this done within this timeframe" and it can get you into bad habits that aren't easy to break. Hell, there are still days where I write something, and then come back to it in a few days and think "why the hell did I write this shit function?".

    And yeah, the engineering process isn't really touched on in any classes, with the possible exception of black box vs white box testing. Even still, it's only in passing that it is mentioned. At my school, the intro to software engineering class is only a technical elective. They do have a requirement that one of your technical requirements is taking either that class, or compilers (fuck ever getting anywhere near that), and the class is basically an excuse to develop a semester long project in a group setting. I took it over the summer, and the class itself was pretty much a waste since I had been at my internship for a year and I already knew the development process. The project in that class, however, is going to be great to use in my portfolio when I graduate.

    Quote Originally Posted by Julian View Post
    I personally learned Java first (meh), and then suddenly my OS class had us using C. It was a bit awkward at first since the programs weren't exactly easy, but when you know the concepts, it's just a matter of googling to find out how it may be different in another language.
    I'm taking OS this semester, and we also have to write our program in C. Plus it's in a group setting, and I don't know anyone in the class, so I'm probably going to get stuck in a shit group. What did you use to compile your programs? I'm almost certain we're going to be programming on our UNIX environment at school, but I'd like something to use at home just to get my feet wet in it.

  10. #30
    netz
    Guest

    Quote Originally Posted by Eliseos View Post
    And yeah, the engineering process isn't really touched on in any classes, with the possible exception of black box vs white box testing. Even still, it's only in passing that it is mentioned. At my school, the intro to software engineering class is only a technical elective. They do have a requirement that one of your technical requirements is taking either that class, or compilers (fuck ever getting anywhere near that), and the class is basically an excuse to develop a semester long project in a group setting. I took it over the summer, and the class itself was pretty much a waste since I had been at my internship for a year and I already knew the development process. The project in that class, however, is going to be great to use in my portfolio when I graduate.
    I took the intro to software engineering course and loved it. The group project development aspect was really fun (despite being stressful), and it was really my first opportunity to be tested on our ability to gather requirements and come up with an effective design for our applications. Each of our groups had to make presentations on those topics to the whole class, and the professor and TA would offer criticism. I'm basically repeating the course as a group manager this semester. The course does touch on testing as well, but testing doesn't really get touched in any course except for software engineering analysis, which virtually nobody is required to take.

    I think I would have liked to try the compilers course here, but I'm not sure it's being offered this semester or next, and I graduate next semester, so... bleh. I'm looking at other topics like the higher level theory of computation course, or the 500 level combinatorics/graph theory course, despite only requiring two more CS courses to graduate.

    Quote Originally Posted by Eliseos View Post
    I'm taking OS this semester, and we also have to write our program in C. Plus it's in a group setting, and I don't know anyone in the class, so I'm probably going to get stuck in a shit group. What did you use to compile your programs? I'm almost certain we're going to be programming on our UNIX environment at school, but I'd like something to use at home just to get my feet wet in it.
    Amusingly enough, they shitcanned the usage of C for Operating Systems at my school -- it's now Java, and are condensing the requirement of Computer Architecture and Operating Systems into a single course, Computing System Principles. They've made a lot of program changes recently in order to open up students to take a lot of electives and mold the degree into something that suits them, while still requiring what they consider the foundation of CS.

    If you're using C, and you're a competent programmer, get used to using gcc. Makefile writing skills might also help. Test your skill with pointers and memory allocation -- it'll be a bit strange if you're only used to Java's references, since C makes it explicit with differences between pass-by-value and pass-by-reference, the * dereference operator, and the & reference operator. It's not too hard to learn, but some experimentation now will save you a headache when you try to figure out why your OS projects fail to build or randomly cause segmentation faults (access violations on Windows). This may also be the time to learn the command-line debugger, gdb.

  11. #31
    E. Body
    Join Date
    Jan 2007
    Posts
    2,103
    BG Level
    7

    Quote Originally Posted by netz View Post
    I took the intro to software engineering course and loved it. The group project development aspect was really fun (despite being stressful), and it was really my first opportunity to be tested on our ability to gather requirements and come up with an effective design for our applications. Each of our groups had to make presentations on those topics to the whole class, and the professor and TA would offer criticism. I'm basically repeating the course as a group manager this semester. The course does touch on testing as well, but testing doesn't really get touched in any course except for software engineering analysis, which virtually nobody is required to take.
    I just had a terrible time in mine. The person teaching the course had never taught it before, so most of what our work was supposed to be was made up as the course went along. We started our project with four people (eight people total in the class), one guy never did anything the entire project and eventually stopped coming to class. Another guy would randomly do what he was supposed to, and then stop working for weeks at a time. He stopped working completely the last week of the class and never showed up to the final exam. That left me and another person busting our asses trying to get everything done. This was also during the summer, so the normal 16 week class was shrunk in half. If I had competent people in my group, I would probably have enjoyed it more.

    The prereqs for the class are kind of stupid too. It's a 500 level class, but the only prereq for it is the second semester programming class (my school has a track of three programming classes, with the last being mostly data structures).

    Amusingly enough, they shitcanned the usage of C for Operating Systems at my school -- it's now Java, and are condensing the requirement of Computer Architecture and Operating Systems into a single course, Computing System Principles. They've made a lot of program changes recently in order to open up students to take a lot of electives and mold the degree into something that suits them, while still requiring what they consider the foundation of CS.
    That's kind of surprising about architecture. I guess I can understand why they're doing it though. Architecture was one of my more enjoyed classes, it helped that I had a pretty awesome teacher. I'm also cheating with my technical electives a bit since my EE minor is being used to satisfy most of my tech electives.

    My university is also making changes to the program, making it a bit easier. They are starting to phase out C++ for Java, refactoring the software engineering class I mentioned above into a simpler class and an elective class. I think they're also starting a Capstone class that will be required.

    If you're using C, and you're a competent programmer, get used to using gcc. Makefile writing skills might also help. Test your skill with pointers and memory allocation -- it'll be a bit strange if you're only used to Java's references, since C makes it explicit with differences between pass-by-value and pass-by-reference, the * dereference operator, and the & reference operator. It's not too hard to learn, but some experimentation now will save you a headache when you try to figure out why your OS projects fail to build or randomly cause segmentation faults (access violations on Windows). This may also be the time to learn the command-line debugger, gdb.
    Ah, I didn't realize gcc compiled C also. When I was taking my programming classes, my university taught C++, so I have pretty good experience with Make, gcc, and gdb. I'll probably just start reading the text we have a bit earlier to get back into those since it's been about a year since I dealt with anything C++ related.

  12. #32
    Very Sexy Nerd
    Join Date
    Oct 2005
    Posts
    8,732
    BG Level
    8
    FFXI Server
    Carbuncle

    Yeah, gcc. Also vim ftw. (lol. Or emacs, but I personally prefer vim)

    Software Engineering was a required class for us, my group made an android game, and by my group, I mean one person did the entire work. Not because no one else wanted to do any work, but he just freaking hogged it and did everything and... yeah. I don't think I really did anything in that class.

    Our OS class wasn't in groups, except for the final project where we basically made a shell. That was fun as hell. I had a good partner though, and he did most of the lex/yacc stuff, and got the bare bones of the thing working. I did more of the features, aliases, command completion and history, etc. Was a really awesome project. I was a total pro in C after I finished that class. The one website that I used the most was http://www.cplusplus.com/reference/clibrary/cstring/

  13. #33
    netz
    Guest

    Quote Originally Posted by Eliseos View Post
    Ah, I didn't realize gcc compiled C also. When I was taking my programming classes, my university taught C++, so I have pretty good experience with Make, gcc, and gdb. I'll probably just start reading the text we have a bit earlier to get back into those since it's been about a year since I dealt with anything C++ related.
    You're in good shape already, then. Sorry to hear about your poor experience with a software engineering course, though in some respects that might accurately represent some of the slackers who exist on live real-world projects already... :\

  14. #34
    Falcom is better than SE. Change my mind.
    Join Date
    Jun 2006
    Posts
    17,291
    BG Level
    9

    Visual Basic is a pretty good beginner language, after that you can move up to more advanced things like C++/C#

Page 2 of 2 FirstFirst 1 2

Similar Threads

  1. Whats your program?
    By anoush in forum General Discussion
    Replies: 9
    Last Post: 2005-10-18, 04:49
  2. LOLs programming fun #2
    By Lasitha in forum General Discussion
    Replies: 7
    Last Post: 2005-10-04, 14:10
  3. Programming FUN!!!
    By Lasitha in forum General Discussion
    Replies: 26
    Last Post: 2005-09-29, 16:56
  4. Voice Chat Program - o.O
    By Hoodlum in forum General Discussion
    Replies: 1
    Last Post: 2005-07-28, 23:23