Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Programming Languages

  1. Oct 6, 2007 #1
    I am a 2nd year Computer Science student, and would like to do all of my assignments in several different languages. The class is Java, but I would like to also learn:

    Visual Basic

    But I don't know how to get these programs! I see several different versions of each, ranging in hundreds to thousands of dollars. Any guidance would be appreciated, thank you.

  2. jcsd
  3. Oct 6, 2007 #2

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    Most schools have computer labs with Linux machines. C and C++ are free on those machines.

    Java and C++ are variations on the same object oriented paradigm. Both owe a lot of heritage to C, a procedural programming language. My opinions on Visual Basic cannot be stated in polite company. Nonetheless, it too is a object oriented language written on top of a procedural language. Learn one and it is easy to learn the next.

    You will learn far more if you learn to program in a language based on a different paradigm or at a different level of abstraction. For example, Erlang or Lisp, which a functional programming languages, or assembly, where you are much closer to how the machine actually works.
  4. Oct 6, 2007 #3


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    I assume you have a windows computer, then. Microsoft's IDE for those languages is free:


    And there are a wide variety of free C and C++ compilers. e.g. look into how to get gcc for windows. (I use cygwin to do it)
  5. Oct 6, 2007 #4
    Or you can use BloodSheds Dev-C++ which is nice package comes with a gcc compiler all ready to use.

    On linux get gcc package from your package manager and you can use kwrite, or kate, is nice. Nothing beets Vim :).

    On windows you can get scite which is a nice c/c++ editor.
  6. Oct 7, 2007 #5
    I am downloading the Dev-C++, thank you all. I will look into some other language paradigms as well. Any other advice? I have a wife and son; when I finish my degree I want to be a very good/marketable programmer. Thank you again.
  7. Oct 7, 2007 #6


    User Avatar
    Gold Member

    Wait Stop!!
    I can't see any reason in the world to use Dev-C++ first of all, DC++ was programmed in delphi which leads to problems of it's own (stability issues for example), for this and other reasons DC++ has stopped being developed for a few years already and the people working on it made a better IDE called Code Blocks.
    But even Code Blocks would be a bad choice compared to the Visual Studio Express Edition with is a free IDE virtually identical to the standard version of VS. It's better than Both CB and DC++ in almost every respect - speed, stability, flexibility... but the biggest difference in my opinion is the debugger. The debugger in VS is stable - so stable that you can change code in the middle of debugging! - packed with powerful features such as the call stack, and very easy to use. Compared to the VS debugger, the DC++ and CodeBlocks debugger is a piece of ****. It crashes all the time and gives little feedback on the program.
    And if that isn't enough VS has intellisence which means aunomatic fill-ins and all kinds of cool stuff.
    Bottom line - if you want a free C++ IDE for windows get VS Express.
  8. Oct 7, 2007 #7
    I agree. Your plan will make you add to your workload by learning various languages that only differ a little from each other, and quite possibly get "confused by their similarities" when you go from one to the other, for not much gain. Why don't you register for a class in comparative languages instead? This will show you all sorts of other ways to address the same problem, you will learn something more useful and earn credits at the same time. Picking up a new language will become even easier after that.
  9. Oct 7, 2007 #8

    Dr Transport

    User Avatar
    Science Advisor
    Gold Member

    Watcom has a nice C/C++ plus Fortran 77 package. As fo rthe Visual Basic, other than the Microsoft IDE, if you have Excel, you can work with VBScript within that and learn alot.
  10. Oct 7, 2007 #9
    Vim also has intellisence :).

    For learning it doesn't matter which editor/IDE you use. DevC++ even though is not being developed is still good for learning.
  11. Oct 7, 2007 #10


    User Avatar
    Science Advisor
    Homework Helper

    If you are doing this to get a job learn c# instead of c++, it is so similair to Java that you should pick it up quickly and there are lots more jobs.

    Visual basic is officially discontinued, there are currently lots of jobs for VB programmers but they are mostly maintining old VB systems.

    If you are going to work in industry learn the microsoft ide - the 'express' version of all the microsoft IDEs are free. If you are in industry you will be expected to know the MS IDE not jsut the language.
  12. Oct 7, 2007 #11
    Yes, I'm interested in getting a job! I want to learn whatever I need to learn in the next 2-3 years to do that. Is C# part of the .net stuff?
  13. Oct 7, 2007 #12
    Comparitive Languages

    I have wife/son/job -- so adding a class beyond what is already required is much more difficult than picking up a book and learning it on my own. I will look into the different language paradigms as many of you have suggested, thank you. From what I understand, besides OO, there are...

    Logic, Procedural -- any others? What would the "best" language to learn for the others?

    Thank you so much.
  14. Oct 7, 2007 #13
    Well, if you have a 2-3 year plan then maybe you shouldn't spread yourself too thin too soon. Mastering the subject is more important than learning languages. Computing science is far more than just programming, and it's not too hard to pick up a new language if you have a solid foundation. My different classes were taught using whatever language was pertinent for it. We used Modula-2 in introductory classes, LISP in AI classes, C in operating systems and networks... You didn't have to become an expert in any of them, just pick up the basics and work with that. My own approach would be to just do the class in Java for now, paying attention to the theory. Soon enough you will learn operating systems and likely switch to C or whatever else the teacher finds appropriate. Pick up the language then, it's more efficient.

    Of course this is not my business, so here's a more direct answer to your current question.

    Not exactly a "paradigm" since it is still procedural, but a short introduction to machine language/assembly is enlightening for a number of people who have not yet been taught the fundation of digital circuitry and how the internal registers of a CPU are used. It's useless for all but a few specialized jobs nowadays, but it is revealing to know what goes on at the most basic level so you may find it valuable.

    OO, which you are covering with Java, is by and large an extension of procedural programming which adds a way to modularize and reuse code. It is still procedural inside its various class implementations. A lot of (most?) recent languages support OO nowadays (Java, C#, Ruby, Python...) so pretty much any language is fine to learn that. I would not spend time on plain C right now though, you can easily pick it up later if and when you need it.

    Prolog can cover logic programming and give an overview of AI expert systems. Interesting and different from what you are used to. You may not learn it in school unless you take AI classes.

    Functional programming: LISP is the best known in this group and it has spawned many less-famous descendents. Since a lot of errors arise from misuse of variables, functional programs get rid of them (almost). Just use functions that call functions. There is still data, mainly stored in lists, and your whole program processes lists. It's also a very different way to get a solution to a problem. Interestingly maddening at times (LISP (stands for (Lots of (Infuriating (Superfluous (Parentheses)))))). It's another popular AI language.

    Then, you have computer languages that are not programming languages: SQL is an important one! It's a descriptive language used to describe what you want instead of writing procedures or functions to do it, and it's a must if a job interests you. If there's any database class in your curriculum, you will use it there. Similarly, a lot of descriptive computer languages are needed for this silly internet fad: HTML, CSS, XML... Again, not programming.

    Well, have a good time!
  15. Oct 7, 2007 #14


    User Avatar
    Science Advisor
    Homework Helper

    Yes - in a way.
    .net is a set of libraries to do - you can use these libraries from vb.net, managed c++ and a whole range of other implementations (ironpython, ironruby etc) but the simplest is c#.
    C# is (in simple terms) a cut down version c++ with java style garbage collection specifically invented to make .net progamming easy. Or alternatively it's a MS only version of Java done as an evil plan to allow MS to take over the world.

    Either way it doesn't matter if you are looking for a job. C# with knowledge of .net and winforms means you won't starve, also knowing Java will mean you have a choice of jobs.
  16. Oct 15, 2007 #15
    JCreator LE is a great free program to use for coding.

    go to this free software browser and scroll down to coding/text editor and click on jcreator LE
  17. Oct 29, 2007 #16
    I think that is a mischaracterisation.

    I'm not sure which dialect of Lisp you're referring to. The most prominent ones these days are Common Lisp, Scheme and Emacs Lisp. Common Lisp and Scheme are multi-paradigm, general-purpose languages, not just functional programming languages for AI.

    CL has an object system (which, incidentally, differs to a large extent from Java's) and a boatload of other non-functional features. Scheme has libraries that also provide various object systems and things.

    Data is not mainly stored in lists. There are many structures and classes available, including vectors, hash tables, etc as well as lists. Probably the most visible "lists" constitute the source code itself -- being written in s-expressions (hence parentheses) that promote code-data parity.

    Lisp is suited to a great variety of domains, including web applications, game development, physics, text processing, AI, etc. Its exclusive association with AI is really an obsolete perception.

  18. Oct 29, 2007 #17
    That was not a description of LISP. I was giving a preamble to the functional programming paradigm. LISP happened to be the prototypical language for it.
  19. Oct 29, 2007 #18
    "Functional programming: LISP is the best known in this group" and "It's another popular AI language", both sound very much like a (poor) description of Lisp to me. A general-purpose, multi-paradigm language is a strange way to introduce functional programming or AI, and vice versa.

    In any case, what I said about data structures also applies to functional programming in general. Lists are even less important to the paradigm than they are to the language. This is especially evident in other languages like Haskell, but even in Lisp. (And it certainly doesn't get rid of variables, by any stretch!)

    Incidentally, "LISP" is itself an obsolete term -- I don't think anyone uses the language LISP anymore. The popular dialects are, as I said, Common Lisp (often called "Lisp"), Scheme and Emacs Lisp.

  20. Nov 11, 2007 #19
    eclipse is one of my favorites; I'm currently using it for Java. It fits nicely on a flash drive and doesn't require any installation. It has IDE's for Java, C++, and C. It's also got a nice debugger and interface, but the nicest part about it is the "intellisense" and the code-checking.
  21. Nov 26, 2007 #20


    User Avatar

Share this great discussion with others via Reddit, Google+, Twitter, or Facebook