locked
What programming launguage next? RRS feed

  • Question

  • For a 12 year old what would be the best programming language to progress to?

    I like the sound of C#.net because on the XNA Game Studio but would VB.net be easier to learn, also I would like something versatile.

    Thanks.

    Tuesday, February 17, 2009 5:20 PM

Answers

  • Could you recommend a way to start? Also I hear that C# is used a lot and is similar to Java.
    Wednesday, February 18, 2009 2:53 PM
  • If you are starting from zero, and you want to learn a language with more power the SmallBasic, there is a text that will help you get there. Blue Pelican Java is a high school text that is designed to take students from zero in Java to the AP exam in a single school year. It is available for free at the link above. Down load the text, read through it, and make sure you do the exercises and projects. It will explain what you need to know in small manageable chunks. Another good text to take you from zero is Java for Dummies which can be found used for about $20. It's not as straight forward as BPJ but it comes at the topic with a sense of humor, which at times can be more important. If Java is your first dip into a full blown programming language, netbeans will be a bit much to handle. I would instead suggest going with JGrasp. Its offers a lot less then netbeans, but it is also a lot easier to deal with.

    To give you an idea what you are getting into, his is a couple of code snippets that do the same thing. The first is SmallBasic, the second is java:

    SB:
    TextWindow.WriteLine("Hello World")

    Java:
    public class myProgram
    {
        public static void main(String args[])
        {
            System.out.println("Hello World);
        }
    }

    It may seem like a lot of hoops to jump through. You might wonder "Why would any one do this"? The reason to bother with the complexity is that the lower the level of the language the more control of the computer you have.

    Wednesday, February 25, 2009 6:54 PM
    Answerer

All replies

  • Java.

    Here are some of the reasons:
    • Java is Multi-platform, the compiled code works on any computer.
    • The best tools (netbeans) is free and available on the net
    • The class structure is easier to swallow then C++
    • Java is the language of the computer science AP exam.
    Wednesday, February 18, 2009 2:26 AM
    Answerer
  • Could you recommend a way to start? Also I hear that C# is used a lot and is similar to Java.
    Wednesday, February 18, 2009 2:53 PM
  • As a programming teacher I have been trying to answer your question for a few years.  Do not necessarily look at the language but look more at what you want to do with it.  If all you want to do is write cool little games, draw interesting pictures, solve Project Euler problems and generally fool around Small Basic is just as good as anything.  If you want to just write some interesting games (old Mario Bros type) download Game Maker.  There is a free demo, just Google Game Maker.  If you really want to bury your head in the game making world C# with XNA will do the job.  Learning VB or C# from scratch are about equal as far as difficulty, you just have to have several reference books.  If you want to just tinker with some cool stuff download Alice and Scratch (both free) and have a blast.  For pure fun in programming you cannot beat either one of them.  Coding Cat's recommendation of Java is correct if you want an extremely versitile language. 

    I would suggest you play with them all a little before going overboard on any one language.  Once you learn the basics of any language the others become much easier to learn.  Also pick a language that has a fairly active blog.  It makes it a lot more fun to learn when you can talk to other people learning the same stuff.
    Wednesday, February 18, 2009 3:29 PM
  • Yes, I can agree with all of that. If your kid is just starting out, I would say that SmallBasic is the best starting point you will find. If he has progressed to the point where SmallBasic is looking a little... well, small, then again I have to say java. High schools, colleges are universities are all using it as their teaching language. It is straight forward, and for a full blown, Turing compatible, language it is pretty easy to swallow. Two books I can suggest are Blue Pelican Java (a highschool text) and Big Java (more of a reference text). They come at the lanague from different directions, but both are good at explaining the topics.

    If your kid is just looking to have fun, then any of the suggestions above are good starting points. The one addition I would toss on to the pile is Flash. It has become as universal as Java; and it is far easier to develop multi-media aps then any other language I have encountered.

    Wednesday, February 18, 2009 10:01 PM
    Answerer
  • Ok I've decided to go with Java but witch IDE should I start with Greenfoot, BlueJ or Netbeans. Also if I learn Java would I be able to pick up things like C#.NET and also I already know a bit of VB.NET.
    Thursday, February 19, 2009 9:51 AM
  • Net beans is the tool of choice. Some of the basic functions like starting a new application can take more steps then you would think necessary, but once you are up and running you can't beat Net beans for ease of use in editing and debugging. Plus it is free, and will work on any computer system. The only down side is that as a full blown Integrated Development Environment it may be a bit much to swallow if your only experience has been with SmallBasic.

    My second choice would be BlueJ. The graphic way they represent classes and objects can be useful to a beginner.

    To answer you second question, the syntax of Java is very close to that of C++. Once you are comfortable with Java switching to C/C++ isn't that much of a chore. As for the .net products specifically, at that level you are talking dialects rather then language. C# is C++ with the .net classes. and VB.net is VisualBasic with the .net classes. If you know a base language (like C++) or a similar language (like Java) then picking up a new dialect is no big deal at all.


    • Marked as answer by ben1066 Friday, February 20, 2009 9:08 AM
    • Unmarked as answer by ben1066 Wednesday, February 25, 2009 5:31 PM
    Thursday, February 19, 2009 10:02 PM
    Answerer
  • I tried Java but it made absolutely no sense!
    What would be a bit easier,
    Also if it helps I might be able to get Visual Studio 2008 Pro through dreamspark soon,
    Thanks. 
    Wednesday, February 25, 2009 5:33 PM
  • Also how about F# or Windows PowerShell?
    Wednesday, February 25, 2009 5:54 PM
  • If Java made no sense then you are in trouble.  Having Visual Studio will not make anything easier.  Learning Java, C#, Visual Basic, C++, Python or most other C based languages is going to be about the same level of difficulty.  90% of the whole problem is getting the right help, be that a good text or a good teacher.  I have 5 C# books and they all assume I know more than I do.  Every programming teacher I have had assumed my IQ was off the chart, as least that is how it felt.  Download Net Beans, find a book that uses net beans to teach Java and party on.  F# may be the worst choice.  It is new and there is a limited number of books.  Java has been around a while so there are lots of books available and lots of people teaching it.  Some actually are good (books and people).  Remember, most of the people on this forum are here because they only need a nice, simple language to have some fun with.  As IDEs go Small Basic is extremely simple and basic (hence the name).  Pretty much nothing else is as easy to work in.  Play with Java for about a month and you may have an idea on how to write some simple stuff.  Give it a couple of years to get half way decent.
    Wednesday, February 25, 2009 6:32 PM
  • If you are starting from zero, and you want to learn a language with more power the SmallBasic, there is a text that will help you get there. Blue Pelican Java is a high school text that is designed to take students from zero in Java to the AP exam in a single school year. It is available for free at the link above. Down load the text, read through it, and make sure you do the exercises and projects. It will explain what you need to know in small manageable chunks. Another good text to take you from zero is Java for Dummies which can be found used for about $20. It's not as straight forward as BPJ but it comes at the topic with a sense of humor, which at times can be more important. If Java is your first dip into a full blown programming language, netbeans will be a bit much to handle. I would instead suggest going with JGrasp. Its offers a lot less then netbeans, but it is also a lot easier to deal with.

    To give you an idea what you are getting into, his is a couple of code snippets that do the same thing. The first is SmallBasic, the second is java:

    SB:
    TextWindow.WriteLine("Hello World")

    Java:
    public class myProgram
    {
        public static void main(String args[])
        {
            System.out.println("Hello World);
        }
    }

    It may seem like a lot of hoops to jump through. You might wonder "Why would any one do this"? The reason to bother with the complexity is that the lower the level of the language the more control of the computer you have.

    Wednesday, February 25, 2009 6:54 PM
    Answerer
  • I think that you can now learn any language.

    C# and VB.NET are equivalent language. What you can do in VB.NET, you can do in C#, and the inverse is also true (and it would be even more true when .NET 4.0 will be out, because as of .NET 4.0, a total compatibility will be set between the two languages).

    Java is very similar to C#, but it's a bit older, so you may find it a little more complex, but this is not so great.

    VB.NET (aka Visual BASIC .NET) is very similar to Small Basic in the 'Core' syntax, but you'll need to learn the same things for each lanauges (VB.NET, C#, Java, C++ ...)  :
    > Classes & Objects (POO)
    > Delegates & Events
    > Program's common paterns
    > How to use the IDE

    For information, the Small Basic program is made in C# (but you can write the same in VB.NET as I explained before).

    I hope you'll find this response useful,
    Fremy
    Fremy VB & C#
    Wednesday, February 25, 2009 10:05 PM
  • FremyCompany said:

    I think that you can now learn any language.

    C# and VB.NET are equivalent language. What you can do in VB.NET, you can do in C#, and the inverse is also true (and it would be even more true when .NET 4.0 will be out, because as of .NET 4.0, a total compatibility will be set between the two languages).

    Java is very similar to C#, but it's a bit older, so you may find it a little more complex, but this is not so great.

    At the risk of igniting a flame war, I have to say that Visual Basic and C are not equivalent languages. C# and VB.net may have access to the same function set and because of this they may be able to produce applications that accomplish the same tasks.

     

    The difference though is in how C and Visual Basic make it from programming language to compiled code. C (any variant of C) tries to make as few assumptions as possible. The job of defining variables, describing data, and allocating memory is left entirely to the user. From a development time and complexity point of view, this may seem like a chore. The pay off is in the control you get in return. Anything that the computer can do can be accomplished in C/C++. And in C/C++ the resulting code, written efficiently, will run as fast as is possible on the computer (outside of coding in straight assembler). The same is not true of Visual Basic. To simplify the coding process, VB (again, any variant of VB) makes a lot of assumptions. In the process of managing memory and easing the burden of the programmer these assumptions place a limit on what an application can accomplish and take a toll in the processing speeds that are possible.   

     

    You may be wondering where Java falls in this equation. Because of the need to run on a virtual machine, Java code tends to run considerably slower then equivalent C++ code. The pay off for Java is the ability to run the same code without modification on any computer that has a virtual machine or web browser installed. As for complexity, Java is a couple of years older then C#. But, Java is a few years younger then C++, which is at the base of C#. And, the class structure of Java is lacking the loop holes of C++. The straight forward class structure of Java makes the resulting code far less complex, and a bit easier to learn.

     

    With all that said, aStudentDev, the choice is still yours. You can choose to learn any language now. Loyola IT and I were merely giving you suggestions to flatten the learning curve and make getting started a little easier.

    Thursday, February 26, 2009 2:53 AM
    Answerer
  • The difference though is in how C and Visual Basic make it from programming language to compiled code. C (any variant of C) tries to make as few assumptions as possible. The job of defining variables, describing data, and allocating memory is left entirely to the user. From a development time and complexity point of view, this may seem like a chore. The pay off is in the control you get in return. Anything that the computer can do can be accomplished in C/C++. And in C/C++ the resulting code, written efficiently, will run as fast as is possible on the computer (outside of coding in straight assembler). The same is not true of Visual Basic. To simplify the coding process, VB (again, any variant of VB) makes a lot of assumptions. In the process of managing memory and easing the burden of the programmer these assumptions place a limit on what an application can accomplish and take a toll in the processing speeds that are possible.   

    You're wrong here. What you're saying is well true for VB6 & C++, but not VB.NET and C#.

    C# and VB.NET are compiled in the same intermediate language byte-code (called MSIL). This language is not a 'compiled language', but a 'byte-code'. This is why you can run the same code in Windows, Linux, or Mac (with Mon, the OpenSource implementation of the DotNet FrameWork).


    Fichier:Overview of the Common Language Infrastructure.svg

    This is in fact how Java works, too. The only one difference is that .NET has not a 'virtual machine' but a 'Just-in time compiler', but it's the same thing for the beginner.
     
    You may be wondering where Java falls in this equation. Because of the need to run on a virtual machine, Java code tends to run considerably slower then equivalent C++ code. The pay off for Java is the ability to run the same code without modification on any computer that has a virtual machine or web browser installed. As for complexity, Java is a couple of years older then C#. But, Java is a few years younger then C++, which is at the base of C#. And, the class structure of Java is lacking the loop holes of C++. The straight forward class structure of Java makes the resulting code far less complex, and a bit easier to learn.

    C++ is not really the 'base' of C#. C# is a fully new language. Juste like VB.NET is not a new version of VB. It's a completely new language. You can' compare them. J# is an implemenation of Java for DotNET.

    That said, Java is a good language. This is well the source of inspiration of the DotNET platform. (C#'s inspirationC++, Java, Object Pascal, Modula-3, Eiffel)


    Fremy VB & C#
    Thursday, February 26, 2009 8:15 PM
  • This is a great thread.  I am learning all sorts of details I had no idea about.  Now, just to stir the pot a little bit more, what would those of you that are teachers and experienced programmers consider the best language to teach high school with?  Is there a significant difference?  Ignore the AP thing, the goal is to teach programming, not get AP credit.  I am teaching Programming I with Small Basic because of the low overhead.  Using Visual Studio or a Java IDE just adds major complication that novices really do not need.  Presently we teach Programming II with VB.net.  After looking at the "professional" languages (VB.net, C#, C++, Java, Python) I cannot see a major teaching advantage to any of them.  Comments?
    Thursday, February 26, 2009 9:26 PM
  • Small Basic is a good language to begin with. I never seen any best, in fact.

    But it messes in some points :
    * Variables must be global. Parameters can be sent to a pre-builded function, but you can't receive any
    * There's no way to create Objects. You can use them, but not create them
    * There's no way to learn POO as wel. Objects are static, and so, they are more considerated as NameSpace (lib of functions) by the beginner
    =======> There's no way to learn POO
    * Event Handling and delegates are very poor in SB (just what a beginner needs, but not a programmer)
    * ...

    After that, any modern language can be used to 'get more'. Whatever it is VB.NET, C# or Java, or any other, the developers needs to learn skills, not a language. When you've the skills, you can switch from a language to another without great difficulties.

    It's similar to fishing. When you can fish a trout, you can learn how to fish a salmon rather quickly, you have already the total technique, it takes you just a little time to adapt you to the new fish.
    Fremy VB & C#
    Thursday, February 26, 2009 10:56 PM
  • C# and VB.NET are compiled in the same intermediate language byte-code (called MSIL). This language is not a 'compiled language', but a 'byte-code'. This is why you can run the same code in Windows, Linux, or Mac (with Mon, the OpenSource implementation of the DotNet FrameWork).


    I stand corrected. I have never had a reason look into the details of VB.net and C# and apparently I missed the distinction that they were compiled to op-code for a virtual machine and not assembler/machine code native to the CPU.

    With this fact in mind, I can see why one would have trouble seeing any reason why you would use anything other then VB.net. It is easy to develop in, and if it runs in a virtual machine, it would give all the benefits of Java. Again without any direct experience, I can still see how you are still losing something by sticking to VB over C# and Java. When you have low level control over resources, even when they are virtual resources, you have an option to optimize that VB denies you.

    There are two ways to approach language choice. Application development and Computer Science.

    When you approach the topic from the direction of application development, the only thing that is important is getting the program built as quickly as possible and getting it out to as many people as you can. With this idea in mind your choice is simple, VB.net all the way. You have to be careful though, the people championing VB.net today are the same types that where hot for COBOL a generation ago, and when the technology shifted, they were left behind because they couldn't see the merits of anything else.

    When you head down the road to computer science, how you solve the problem becomes more important then the problem itself. Terms like Turing Compatible and Big O notation start meaning something important. It is all about algorithms and efficiency. Projects take longer and you risk missing the height of the marked, but your program is going to be as slick and as quick as the machine and your talent allows.

    If you are in college and are planning your career one direction is as good as the other, it is simply a matter of preference.

    Someone starting out, when the student is at the high school level or younger… it is my humble opinion that you have to teach programming as a science.  You need to ignite the passion and show them everything that is possible.

    Again the question becomes, where do you start out? For absolute beginners, SmallBasic is ideal. It is easy to understand and gets the job done with flair. Once they have the ideas down and the students are wanting more, give them Java. Java is C++ light.  Java shows you everything you can do with a language while still keeping it friendly. Stay away from languages like VB that solve too many of the problems for the student; programming should seem more like a pallet of colors then a box of tools.

    But this is just my humble opinion.

     

    Friday, February 27, 2009 4:12 AM
    Answerer
  • Loyola IT,

    Just curious as to what projects you are giving your students in the  Programming I class...


    Tim Alvord
    Friday, February 27, 2009 6:33 PM
  • I start with some simple turtle graphics drawing three polygons.  They go from brute force to using a For statement.  They then do a tesselation to get a couple of subroutine Fors working together within a Main.  Then to a program where the user inputs the number of sides of the polygon to draw.  This is actually simpler to program than the previous program but it does require the user input variable.  Right now they are finishing a quadratic equation solving program that required the use of If statements and a little math.  They will then modify the quadratic program to ask if they want to compute another problem.  This requires a While.  After that my plan is a bit warm and fuzzy.  I eventually want them to write a pong type game but I will have to see what happens.  I am looking for ideas.

    The students are not computer geek kids.  There is quite a range in the classes. I have one kid who can not consistantly figure the difference between a Read and a Write, and another who pretty much has the program written before I am done describing the assignment.  Most of them are in the class because the councilor said "Hey!  Guess what.  You are taking computer programming because there is nothing else offered that hour!"  We are a small school.  So most of them are still trying to understand what a program is.

    This is the first semester of using SB.  Previously we used VB and out of 10 to 12 kids we would get 1 or 2 in Programming II.  The Programming I numbers were also dropping.  VB is not much fun.  No turtle, no graphics (at least not easy), no simple game writing.  Hopefully we can get the numbers up so the kids get some exposure to programming.

    Friday, February 27, 2009 9:31 PM
  • Even though I wasn't asked let me answer that question myself.

     

    Since the semester started at the beginning of January, the intro kids have done 11 projects. With each new topic, I walk them through a duh easy project, and then something that makes them thinks a little and finally something artistic or creative. We started off learning what a program and a compiler is by using WriteLine to do some ASCII art with their names. Then some turtle graphics, drawing an arrow, followed by creating a design of their own. From there we start with variables: first exactly creating the variables I describe, then a mock survey of favorite color, number and such with the answer set to variables and then printed out, and finally a little math, calculating the area and circumference of a circle. From variables to user input with the Read and ReadNumber operations: First a music survey, then a Fahrenheit to Celsius converter and our most recent project, a Madlibs game. Our next topic will be getting familiar with the Math object, so I'm thinking more conversion calculators, and some kind of simple game with the random number generator. In other words, I don't know yet.

     

    My goal is to introduce the students to the basic tools of programming, Variables, Math, Conditionals, and Looping. Add, Move, Compare, and Jump.

     

    At my school we have a very international student body and computer science (programming or web design) is a requirement. I get a lot of students who don't want to be there and who have trouble following the vocabulary. I have to take things very slow.

     

    Last semester we used java. Even with the help of Blue Pelican Java as a text book, we only got through six projects, and they were all pretty lame. Out of the 32 students I had in my Intro to programming classes, I had two sign up for programming one.

     

    This semester with small basic easing the way and giving some immediate gratification things are going much smoother. The kids seem to be learning what I'm teaching them. And more importantly, most of them seem to be having fun.   

    Saturday, February 28, 2009 4:15 AM
    Answerer
  • These days, I'd say Javascript.  You can write code that will run in web browsers anywhere; and with Windows 8, it's a first class development language for WinRT.
    Tuesday, January 31, 2012 8:50 AM
  • For my students of secondary I chose Small Basic.
    Very few of them will be an ICT career
     
    I'm going to take these courses during February:
    • Introduction to programming with C#.NET
    • Introduction to databases and SQL
    • Introduction to the object paradigm
    But, will only apply to those students who voluntarily want to take them.
     
    In March I will choose
    •  c# or VB, both .NET.
    Well, everything is a matter of opinion. There is  not a prescription.
    But if in some student appears the passion of developing, I will put my grain of sand

    Best regards

    carlosfmur - Buenos Aires
    Sunday, February 5, 2012 5:02 PM