Learn Programming Languages for Free: C, C++, Visual Basic

In summary, the conversation is about a 2nd year Computer Science student who wants to do all of their assignments in several different languages. They mention wanting to learn C, C++, and Visual Basic, but are unsure of how to obtain these programs as they can be expensive. Other users suggest using free options such as Microsoft's IDE or getting gcc for Windows. There is also a discussion about the benefits of learning different programming paradigms and the importance of using the right IDE for job prospects. There is a suggestion to take a comparative languages class to learn different approaches to problem-solving.
  • #1
ded8381
17
0
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:

C
C++
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.

David
 
Technology news on Phys.org
  • #2
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.
 
  • #3
ded8381 said:
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:

C
C++
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.

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

http://msdn2.microsoft.com/en-us/vstudio/aa973782.aspx

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)
 
  • #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.
 
  • #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.
 
  • #6
ded8381 said:
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.
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.
 
  • #7
D H said:
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.

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.
 
  • #8
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.
 
  • #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.
 
  • #10
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 just the language.
 
  • #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?
 
  • #12
Comparitive Languages

out of whack said:
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.


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.
 
  • #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!
 
  • #14
ded8381 said:
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?
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.
 
  • #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
 
  • #16
out of whack said:
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.

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.

:smile:
 
  • #17
abhishek said:
I think that is a mischaracterisation.

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.
 
  • #18
out of whack said:
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.
"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.

:smile:
 
  • #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.
http://www.eclipse.org/downloads/
 
  • #20

1. What are the benefits of learning programming languages for free?

Learning programming languages for free allows individuals to gain valuable skills without the financial burden of traditional education. It also provides access to a wide range of resources and materials, making it easier to learn at your own pace.

2. Is C, C++, and Visual Basic a good place to start for beginners?

Yes, C, C++, and Visual Basic are all popular programming languages and are commonly used in various industries. They are also relatively easy to learn and provide a strong foundation for learning other languages.

3. How can I access free resources to learn these programming languages?

There are many online platforms and websites that offer free tutorials, courses, and practice exercises for learning C, C++, and Visual Basic. Some popular options include Codecademy, Coursera, and W3Schools.

4. Are there any job opportunities for those who learn these languages for free?

Yes, there are many job opportunities for individuals who have knowledge of C, C++, and Visual Basic. These languages are used in a variety of industries such as software development, web development, and game development.

5. How long does it take to learn these programming languages for free?

The time it takes to learn these languages for free may vary depending on an individual's dedication and learning pace. However, with consistent practice and dedication, it is possible to gain a basic understanding of these languages in a few months.

Similar threads

  • Programming and Computer Science
Replies
8
Views
867
  • Programming and Computer Science
Replies
15
Views
1K
  • Programming and Computer Science
Replies
16
Views
1K
Replies
65
Views
3K
  • Programming and Computer Science
2
Replies
69
Views
4K
  • Programming and Computer Science
Replies
6
Views
1K
  • Programming and Computer Science
12
Replies
397
Views
13K
  • Programming and Computer Science
Replies
2
Views
1K
  • Programming and Computer Science
Replies
1
Views
723
  • Programming and Computer Science
2
Replies
54
Views
3K
Back
Top