Computer Science Canada

Where to go next?

Author:  wtd [ Thu Oct 28, 2004 6:11 pm ]
Post subject:  Where to go next?

It seems a popular question here is, "I've got a decent grasp on Turing, but I find it limiting, so which language should I learn next?"

With that in mind, I think it'd be a good idea to just tackle that issue head on in one central place. Perhaps this topic could be stickied.

There are several options out there. Good, solid programming languages. Many of them even have free (either no cost, or open source, or both) compilers or interpreters.

It'd be interesting to hear from the people here about where they think Turing programmers and students should go when they want to move on and learn another programming language.

Some options (not in any particular order):


  • C - compiled
  • C++ - compiled
  • Java - compiled
  • C# - compiled
  • Objective-C - compiled
  • Perl - interpreted
  • Python - interpreted
  • Ruby - interpreted
  • O'Caml - both compiled and interpreted
  • D - compiled
  • Eiffel - compiled
  • Pascal - compiled
  • Ada - compiled
  • Visual Basic - compiled
  • Javascript - interpreted

Author:  Tony [ Thu Oct 28, 2004 11:59 pm ]
Post subject: 

In my opinion : ether C++ or Java (as long as latter is not one by HoltSoft.. do not fall for that)

Both languages are mainstream and would offer a glimps into what real world programming is all about. Both have an unbelivable amounts of information available due to their popularity, so it will be easy to get a hold of solutions to problems encountered during the learning profess. Furthermore many other languages borrow from the structures of this two, so moving on to another programming language would be even easier afterwards.

Author:  wtd [ Fri Oct 29, 2004 6:32 pm ]
Post subject: 

Note: I really like the convention of bolding the names of programming languages here.

Both C++ and Java have the advantage of being standardized. For C++, those standards are open, and thus a bit nicer, but Sun's de facto Java standard is equivalently useful for students.

On the other hand, I don't think either are particularly good "next step" languages. Programmers accustomed to Turing are relatively ensconced in a mostly procedural world. There are many other methods for programming out there, though.

My own personal experience has been that one learns something best by experience. I looked at Java code for years and the idea of object-oriented programming made my head hurt. I even went so far as to proclaim that I'd never need or want it once, when arguing with a friend who'd been seduced away from Perl to Java.

I didn't begin to get a handle on it until a friend of mine (the very same one who introduced me to Perl), gave me a link to some Python tutorials. Being the impressionable young guy I was, I downloaded a copy of MacPython to my PowerMac 6500 and started typing away. I was initially most impressed at the interactive interpreter. Write some code, and as soon as you hit enter it runs and spits out a result.

As I kept dabbling, though, I ran into classes. I initially was hesitant. I'd seen "class" before in Java and it drove me nuts. But then Josh showed me a trivial Name class and it began to click.

Instead of being faced with:

code:
import java.lang.*;
import java.io.*;

public class Main {
   public class Name {
      private String first, last;

      public Name(String first, String last) {
         this.first = first;
         this.last  = last;
      }

      public String toString() {
         return first + " " + last;
      }
   }

   public static void main(String[] args) {
      Name bob = new Name();
      System.out.println(bob);
   }
}


I saw:

code:
class Name:
   def __init__(self, first, last):
      self.first = first
      self.last  = last
   def __str__(self):
      return self.first + " " + self.last

bob = Name("Bob", "Smith")
print bob


That kind of simplicity made it so much easier to delve in and start changing things to see what was possible.

That said, I think Ruby is an even better example of this, and it shares some similar syntactic roots with Turing, so it might be even easier for Turing programmers to catch on. Plus it implements a better OO model than Python.

code:
class Name
   def initialize(first, last)
      @first = first
      @last  = last
   end

   def to_s
      @first + " " + @last
   end
end

bob = Name.new("Bob", "Smith")
puts bob


In summary, the best "next step" language should make it easy to experiment. Ruby does this exceptionally well.

Author:  rizzix [ Sat Oct 30, 2004 11:30 pm ]
Post subject: 

ehmm yea but from what i see, i think ruby gives a wrong/mixed impression of object properties and method variables.

Author:  wtd [ Sat Oct 30, 2004 11:35 pm ]
Post subject: 

How so?

Ruby has a very simple rule: all instance variables are private. Accessor methods are required to make them visible.

Those accessors can either be coded manually, or automatically generated with:

code:
attr_accessor
attr_reader
attr_writer

Author:  MyPistolsIn3D [ Tue Nov 02, 2004 6:37 pm ]
Post subject: 

What languages does your guys schools offer? Ours only has turing and java.

Author:  wtd [ Tue Nov 02, 2004 6:50 pm ]
Post subject: 

MyPistolsIn3D wrote:
What languages does your guys schools offer? Ours only has turing and java.


There's nothing preventing you from learning on your own. Smile

Author:  apomb [ Wed Nov 03, 2004 1:02 am ]
Post subject: 

wtd wrote:
There's nothing preventing you from learning on your own.


except for the immense complexities of C++ ... trying to learn that on your own is a pure nightmare if youre used to turing's simplicity

Author:  wtd [ Wed Nov 03, 2004 1:23 am ]
Post subject: 

CompWiz333 wrote:
wtd wrote:
There's nothing preventing you from learning on your own.


except for the immense complexities of C++ ...


Then choose a different language. I put plenty others on that list, and that's by no means complete.

My suggestion would be going with an "easy" language after Turing. You will get better with each language you learn and each language makes the next one easier to learn.

Learn a few languages you can pick up in a matter of weeks. I believe people could get the basics of languages like Python and Ruby down in days. Being conservative, stretch that out to a month. That's not a long time in the grand scheme of things, and it will make it immensely easier to learn languages like C++.

Author:  rizzix [ Wed Nov 03, 2004 7:38 pm ]
Post subject: 

wtd wrote:
How so?

Ruby has a very simple rule: all instance variables are private. Accessor methods are required to make them visible.

Those accessors can either be coded manually, or automatically generated with:

code:
attr_accessor
attr_reader
attr_writer


i was refering to the fact (maybe) that by inspection of scope specially, you get a mixed and confused impression in the difference of object properties and local method variables, assuming ofcourse the initialize method is not a special method.. (like a constructor in c/c++ or java) but rather an ordinary method playing the role of object state initialization as in obj-c and the likes.

Author:  wtd [ Wed Nov 03, 2004 7:47 pm ]
Post subject: 

rizzix wrote:
wtd wrote:
How so?

Ruby has a very simple rule: all instance variables are private. Accessor methods are required to make them visible.

Those accessors can either be coded manually, or automatically generated with:

code:
attr_accessor
attr_reader
attr_writer


i was refering to the fact (maybe) that by inspection of scope specially, you get a mixed and confused impression in the difference of object properties and local method variables, assuming ofcourse the initialize method is not a special method.. (like a constructor in c/c++ or java) but rather an ordinary method as in obj-c and the likes.


The "initialize" method is a regular old method. As is "new" for that matter, though "new" belongs to the class, is inherited from Object, and is very rarely overloaded.

I think I can see where you'd be seeing confusion.

code:
class A
   attr_accessor :a

   def initialize(n)
      @a = n
   end

   def foo
      a = 5
      puts a
   end
end


The question is, in the foo method, what's happening?

  • Does "a = 5" create a new variable local to the method, ordoes it call the accessor method for @a?

    The answer is that it creates a new variable. To use the accessor a= method, you'd have to write:

    code:
    self.a = 5

  • Does "puts a" refer to the accessor for @a, or does it refer to the local variable?

    A variable "a" has already been defined, so this overrides the "a" name in this method. To refer to the accessor you'd have to use:

    code:
    puts self.a

Author:  bugzpodder [ Wed Nov 03, 2004 9:38 pm ]
Post subject: 

CompWiz333 wrote:
wtd wrote:
There's nothing preventing you from learning on your own.


except for the immense complexities of C++ ... trying to learn that on your own is a pure nightmare if youre used to turing's simplicity

i picked up turing and then C++, there were no problems for me. jumping straight into C++ without getting into turing is more painful in my opinion.

Author:  zylum [ Wed Nov 03, 2004 10:16 pm ]
Post subject: 

i agree, once you learn the basics of programming it's fairly simple to go to another language, its just a matter of learning the syntax along with some language specific stuff. going from turing to java was no problem at all for me.

Author:  apomb [ Thu Nov 04, 2004 12:16 am ]
Post subject: 

you _are_ leet ... come on! im just a wiz! hah , well self- teaching is hard, if i was taught it, in a sequential fasion, i would prolly get it better than just diving in not knowing which end is up... ya know? ne way, i understand the conceps, but im not confident enogh to actually try to write code in C++, thats kinda what i was getting at , not the not getting the concepts.

Author:  wtd [ Thu Nov 04, 2004 12:30 am ]
Post subject: 

CompWiz333 wrote:
you _are_ leet ... come on! im just a wiz! hah , well self- teaching is hard, if i was taught it, in a sequential fasion, i would prolly get it better than just diving in not knowing which end is up... ya know? ne way, i understand the conceps, but im not confident enogh to actually try to write code in C++, thats kinda what i was getting at , not the not getting the concepts.


OK, I'll tell you what I've told many others.

Experiment!

C++ compilers are free, and generally pretty easy to install. You're not out any money.

Compile something and run it. If it doesn't work, ask someone here why.

What's the worst that's going to happen? Is the universe going to implode if you compile something and it blows up in your face? Is it going to format your hard drive and turn all of your personal information over to online Viagra salesmen?

No. There's no risk, so go in and get your hands dirty. Smile

Author:  [Gandalf] [ Tue May 24, 2005 8:22 pm ]
Post subject: 

Well, I was looking, and I realize this is a pretty old topic, but...

I find it easier to do things straight from the environment, not switching back and forth from editor to command prompt. The way I tried java, I use CrimsonEditor, a good program for java, includes and editor and a compiler build it. All you do is "compile" then "execute". Later on, if you want the .exe, you just find it in the folder where the .java files are.

Author:  StarGateSG-1 [ Wed May 25, 2005 7:37 am ]
Post subject: 

I think the best language mix to aim for is for a strong base in C++
added in with java (not holtsofts version, same reason as above), then throw in a little python which is popular in the gaming world. Not to dicourage ruby but it doesn't have much potenial outside of interest learning, although if you want to have fun go ahead. I am sorry wtd that you support it but this is what I think. The languages I have methiod is mostly not my opinion but a collection of research into what employers what in a programer, in turn this reflects what courses university/ college offer.

Thats my 'bit'

Author:  apomb [ Wed May 25, 2005 3:27 pm ]
Post subject: 

the cool thing about C++ is that it too, is good for gaming, like little cellphone games and stuff, little side projects, i think im gunna look into that for some like extra cash ... iunno, need a bit more C++ tho

Author:  wtd [ Wed May 25, 2005 4:08 pm ]
Post subject: 

StarGateSG-1 wrote:
I think the best language mix to aim for is for a strong base in C++
added in with java (not holtsofts version, same reason as above), then throw in a little python which is popular in the gaming world. Not to dicourage ruby but it doesn't have much potenial outside of interest learning, although if you want to have fun go ahead. I am sorry wtd that you support it but this is what I think. The languages I have methiod is mostly not my opinion but a collection of research into what employers what in a programer, in turn this reflects what courses university/ college offer.

Thats my 'bit'


I think you misunderstand me. While I do think Ruby has employment potential, I don't recommend languages based on that criteria solely or even primarily.

As I've said before, and I'll say again a million times, each language you learn makes the learning process easier. You learn not just programming concepts, but how to learn. It makes sense to start out with languages that are straightforward and accessible (how many obstacles does the language throw up to getting started). C++ and Java are neither of these things.

Secondly, trying to learn "commercially relevant" technologies now as a student is absurdity. By the time you're out in thw world, everything will have changed. Technology moves too rapidly to put too much effort into any one buzzword, because tomorrow it might be meaningless. Additionally... you're students! You don't have balding middle-aged men who can't tell a motherboard from a megabyte telling you what programming languages and tools you can use. You're free to experiment. Take advantage of it.

Author:  StarGateSG-1 [ Wed May 25, 2005 4:39 pm ]
Post subject: 

[quote]Secondly, trying to learn "commercially relevant" technologies now as a student is absurdity. By the time you're out in thw world, everything will have changed. Technology moves too rapidly to put too much effort into any one buzzword, because tomorrow it might be meaningless. Additionally... you're students! You don't have balding middle-aged men who can't tell a motherboard from a megabyte telling you what programming languages and tools you can use. You're free to experiment. Take advantage of it.[/qoute]

The best wya to learn is go for the "commercially relevant" languages becasue then when and if they do change you will be able to get right on track learnign the changes. Honestly, Java hasn't changed much, nethier has python, and C++ with the new addition of C# there are mainly no differences except in there purpose, there are always a few chnages but nothing that wil amke your knowledge useless.

I maybe a student, I am going off to university and I need to know what courses to take and how they will help me later on. Also, I don't what to be a mindless drone who knows nothing about the language before he takes a 5-20k course. I still I think and strongly suggest to any programers who are serious to push for C++ even with only a turing background, becasue it really is less complex than people say it is, go buy a C++ for begineers, heh! why not buy C++ for dummies. They are all really helpful and if you are deicated you can do it.

Are you suggesting that all teachers/professers are old?

Author:  wtd [ Wed May 25, 2005 5:15 pm ]
Post subject: 

StarGateSG-1 wrote:
I still I think and strongly suggest to any programers who are serious to push for C++ even with only a turing background, becasue it really is less complex than people say it is, go buy a C++ for begineers, heh! why not buy C++ for dummies. They are all really helpful and if you are deicated you can do it.

Are you suggesting that all teachers/professers are old?


No, I'm not suggesting all teachers and professors are old. I'm (very nearly) 25. Is that old?

C++ is complex. Do you know what all of the different uses of "const" or "static" mean? Do you understand why a normal class can be split into a header and a ".cpp" source file, but a templated class cannot? Do you understand why you shouldn't use identifiers beginning with two underscores, even though it's technically legal?

Do you understand the difference between:

code:
int c = 0;


and

code:
int c(0);


or

code:
c++;


and

code:
++c;


Do you understand why one of these works and the other doesn't?

code:
struct foo
{
   const int a;
   
   foo(const int init_a)
   {
      a = init_a;
   }
};


code:
struct foo
{
   const int a;
   
   foo(const int init_a) : a(init_a) { }
};


Do you understand why this code is wasteful?

code:
int a[] = {1, 2, 3, 4, 5, 6, 8, 7, 9};
int b[9];

for (int i(0); i < 9; ++i)
{
   b[i] = a[i];
}


Do you know how to replace that loop with a single line of code?

Do you know why one constructor cannot be called from another constructor?

Do you know when and why to define a destructor?

Do you understand how to create and use function objects?

Do you know why the following is bad form?

code:
std::string s[] = {"hello", "world", "foo", "bar"};
std::string concatenated;

for (int i(0); i < 4; ++i)
{
   concatenated += s[i];
}


Do you know what to replace the above with?

D you know the difference between a struct and a class?

Do you know the difference between the following, and why the first is better code?

code:
struct name
{
   const std::string first, last;
   
   name(std::string f, std::string l) : first(f), last(l) { }

   std::string full_name() const { return first + " " + last; }
};

struct grade_collection : private std::vector<int>
{
   int total() const
   {
      int sum(0);
      for (iterator i(begin()); i != end(); i++)
      {
         sum += *i;
      }
      return sum;
   }

   int average() const
   {
      return total() / size();
   }

   void add_grade(int g)
   {
      push_back(g);
   }
};

struct student : public name, public grade_collection
{
   student(std::string f, std::string l) : name(f, l), grade_collection() { }
};


code:
struct name
{
   const std::string first, last;
   
   name(std::string f, std::string l) : first(f), last(l) { }

   std::string full_name() const { return first + " " + last; }
};

struct grade_collection : public std::vector<int>
{
   int total() const
   {
      int sum(0);
      for (iterator i(begin()); i != end(); i++)
      {
         sum += *i;
      }
      return sum;
   }

   int average() const
   {
      return total() / size();
   }

   void add_grade(int g)
   {
      push_back(g);
   }
};

struct student : public name, public grade_collection
{
   student(std::string f, std::string l) : name(f, l), grade_collection() { }
};


Do you understand the difference between the following?

code:
for (int i(0); i < 4; ++i)
{
   std::cout << some_vector[i] << std::endl;
}


code:
for (int i(0); i < 4; ++i)
{
   std::cout << some_vector.at(i) << std::endl;
}

Author:  jamonathin [ Wed May 25, 2005 8:41 pm ]
Post subject: 

wtd you're ( |2 @ z Y !!!11 I feel like I should have been paying you for the help you've been giving me with c++ Rolling Eyes

Half of all that "bad programming" or whatever I saw as not bad programming Confused

Author:  wtd [ Wed May 25, 2005 10:03 pm ]
Post subject: 

jamonathin wrote:
I feel like I should have been paying you for the help you've been giving me with c++ Rolling Eyes


I accept cash and money orders.

Author:  [Gandalf] [ Thu May 26, 2005 12:26 am ]
Post subject: 

Wow... that's going to scare a lot of people (including me) from going more in-depth to C++ *hides in corner* Smile

Something I value, though, is: can the language be simple, and simply used as well as complex?

Author:  wtd [ Thu May 26, 2005 1:22 am ]
Post subject: 

[Gandalf] wrote:
Something I value, though, is: can the language be simple, and simply used as well as complex?


I'd like to say yes, but honestly, you need to understand all of those things and more to use the language to its full potential and thus make things as easy for yourself as possible.

Author:  StarGateSG-1 [ Thu May 26, 2005 10:56 am ]
Post subject: 

I never said you had to dig into its full potenial, for a start you can start off the way you leanr turing with hello world, basicly just rewrite your first turnign programs in C++ then it will be on the start. It is easy but you ahve to be deicated. IT takes years to understand some of the concepts of C++, but it is still the next step you shoudl take if you are serious. I have been programing for almost 6 years 3 of them wiht C++ and a little C# I don't understand eveything, but I can write good code and such.

Author:  wtd [ Thu May 26, 2005 12:24 pm ]
Post subject: 

StarGateSG-1 wrote:
but I can write good code and such.


Are you certain of that?

Author:  StarGateSG-1 [ Thu May 26, 2005 12:35 pm ]
Post subject: 

Yes very certain! Very Happy

Author:  wtd [ Thu May 26, 2005 12:51 pm ]
Post subject: 

See, the thing about C++ is that if you don't know those things, you're not writing good C++ code. You just don't know it, which is possibly worse than knowingly writing bad code.

Author:  McKenzie [ Sat May 28, 2005 12:52 am ]
Post subject: 

wtd, while I agree with you that students should not fully rely on us "Balding middle-aged men who ..." to tell them what language they should be learning; that they should be keeping their eyes out for what languages are the movers and shakers you have to conceed his basic point. You are at a big advantage knowing the core of C++ and/or Java before going to University. There are obviously a number of different skills the students must be developing namely: 1. Syntax of the language. 2. Generic Data Structures and Algorithms. 3. Program development. You can't say that syntax is more important than the other two. If you leave high school and you have a flawless knowledge of C++ rules and syntax but can't put together more than simple examples I think you are doing yourself a disservice. All Stargate is saying is that if the University he plans to go to is teaching C++, and Industry still respects C++ why not learn the basics of C++?

Author:  wtd [ Sat May 28, 2005 10:18 am ]
Post subject: 

Well, let me clarify. By "balding middle-aged men" I was referring to the classic middle-management types in the workplace, and not professors (though I've known a few who fit the description).

I understand the practical side of this. If the school is going to teach C++, why not get a jump on it, right?

Well, the reason not to, in my opinion (one developed from having taught myself C++), is, again, the complexity of the language. I went through so many missteps trying to learn it. I "learned" from so many bad sources of information. Someone setting out to learn C++ on their own, in my estimation, should be prepared to devote no less than three or four years to the undertaking. It simply takes a long time to learn how to properly use the language, when there are so many people out there using it improperly (C++ is not "C with classes").

It is my belief that students are therefore best off avoiding that issue entirely for the moment. Get a grasp on general program structure, data structures, etc. Then worry about how to implement those ideas in C++ when you have a professional with loads of experience teaching to guide them through the syntactic and semantic peculiarities of C++.

Author:  axej [ Sun May 29, 2005 12:42 pm ]
Post subject: 

anyone thought of learning .net?

Author:  wtd [ Sun May 29, 2005 3:28 pm ]
Post subject: 

axej wrote:
anyone thought of learning .net?


I've already written some simply GTK# apps using Mono, so yes. Smile

Posted Image, might have been reduced in size. Click Image to view fullscreen.

Posted Image, might have been reduced in size. Click Image to view fullscreen.

Posted Image, might have been reduced in size. Click Image to view fullscreen.

Author:  axej [ Sun May 29, 2005 3:29 pm ]
Post subject: 

interesting Smile

Author:  jamonathin [ Mon May 30, 2005 8:20 am ]
Post subject: 

Hey thats pretty cool, what language does it relate to? Or is it unique. . .

Author:  wtd [ Mon May 30, 2005 12:24 pm ]
Post subject: 

jamonathin wrote:
Hey thats pretty cool, what language does it relate to? Or is it unique. . .


Well, the primary language discussed when talking about ".NET" technologies is C#, which is effectively a Java rip-off with a bit of C++ and Pascal mixed in for flavor.

However, the underlying technology is the common language runtime. It is an environment which, in theory, any language can target. At least partial implementations of the following languages (which come to me off the top of my head, so I may miss a few) have been developed to run in this environment:

C++
Java
Eiffel
Ada
Python
Perl
Ruby
Haskell
O'Caml
SML
Boo
Cobol

Author:  wtd [ Mon May 30, 2005 12:24 pm ]
Post subject: 

Additionally, it's worth noting that I used the GTK toolkit to create that game, via the GTK# bindings.

Author:  jamonathin [ Tue Jun 07, 2005 8:41 am ]
Post subject: 

Do you know, or at least experimented with all of those languages??

Author:  wtd [ Wed Jun 08, 2005 2:59 pm ]
Post subject: 

jamonathin wrote:
Do you know, or at least experimented with all of those languages??


I've worked with the following languages, in roughly the following order:

TI-82/83 BASIC
HTML/CSS
Javascript
Fortran90 (I'll be damned if I remember any of it, though)
Perl
Python
C
C++
x86 Assembly
Java
Objective-C
Ruby
Eiffel
Befunge
D
SQL (MySQL and Postgres)
Bash
O'Caml
Groovy
C#
Haskell
Scheme

I've glimpsed at SML, but didn't really see anything compelling vs. O'Caml, so I've yet to spend any amount of time investigating it.

Author:  Bacchus [ Wed Jun 08, 2005 7:47 pm ]
Post subject: 

Shocked I don't see Turing in there... Shocked

Author:  wtd [ Wed Jun 08, 2005 7:48 pm ]
Post subject: 

Bacchus wrote:
Shocked I don't see Turing in there... Shocked


No, you won't. I only know enough to be of some help here. I have no desire to understand it further.

Author:  Bacchus [ Wed Jun 08, 2005 8:16 pm ]
Post subject: 

Well if you know enouph to help, then shouldn't it be counted that at least you know some and then be on your list? Meh, doesn't matter. I just found it funny that there wasn't Turing on the list and this is in the Turing Help section, lol.

Author:  [Gandalf] [ Thu Jun 09, 2005 3:36 pm ]
Post subject: 

Wow, that's wayy longer than my list.

(in order)
BASIC
HTML
random script languages
Javascript
Turing
Java - not enough to make anything, and I forget most already
C - same as Java Confused

I don't know, I couldn't get a nice grip on either Java or C... I guess I'll just have to wait a bit and try again. Or I could start C++... hmm, well, maybe during the summer...

Author:  Bacchus [ Thu Jun 09, 2005 8:25 pm ]
Post subject: 

Well, that's longer than mine. In order:

Sphere (Game Scripting, very similar to Turing)
Turing
Random Languages (ie: Python, Scheme, and a few others)

Author:  wtd [ Thu Jun 09, 2005 8:54 pm ]
Post subject: 

Java's problem: the library is huge, and vast and complex. Learing to use Java productively is about learning to use the API reference, not memorizing APIs.

C's problem: tiny library which forces you to reinvent the wheel.

Author:  Cervantes [ Fri Mar 17, 2006 10:41 pm ]
Post subject: 

wtd wrote:

Experiment!


We've heard lots of suggestions and arguments for which programming language to learn after Turing. But there are other ways to approach this question.

Rather than carefully choosing a language and rushing headlong into it, take a month to experiment. Pick a few languages that are possible candidates. Chose your candidates how you will, but consider chosing at least one from either side in this discussion. Nominate both Java and Ruby into your list or both C++ and O'Caml. Learn the fundamentals and the basis of the programming paradigms behind them. Wikipedia is a great place to get a glimpse of what a language is like.

While you're experimenting, make notes about each candidate, with the following topics as a guideline.

  • Is it easy to learn?
  • Do you understand what you've learned thus far, or does it seem like there is some "magic" behind the scenes?
  • Are there good resources available?
  • Is the language's community welcoming, helpful, and open-minded, or is it cold and closed?
  • Do you feel comfortable with the language?
  • Is it really something new, or is it similar to what you already know?
  • Is the language alive and growing, or is it dead?
  • Does the relate to things that interest you?


After a month, you'll have much better grounds on which to decide which language you should learn next. You'll be deciding partly on your own experiences, rather than blindly trusting the advice of those around you. "Be an informed consumer"!

Author:  neufelni [ Wed Mar 22, 2006 3:17 pm ]
Post subject: 

What do you all think of Python. I am learning it right now and I really like it. It is a lot better than Turing. You can make a program in Python with much less code than the same program in Turing. I think that Python is a good choice for a language to learn after Turing.

Author:  [Gandalf] [ Wed Mar 22, 2006 6:56 pm ]
Post subject: 

I would have to agree. Python and Ruby are what I would suggest, though it seems O'Caml would be the best choice for a mind stretching. Smile

Also, if you're looking for Python Turing-like graphics abilities and more, make sure to try PyGame.

Author:  Chinchilla [ Sat Apr 01, 2006 5:25 pm ]
Post subject: 

If you go as far as to say java is compiled than you might as well say python is too. Java uses a virtual machine to run the code, as do most other "interpreted" languages I've looked at. Even PHP scripts that aren't compiled get compiled before being thrown through the Zend VM (hence if you want your site to run faster, precompile the code), and I just downloaded the Python source to confirm that it gets compiled, the 'ceval.c' is where the virtual machine is. I don't wanna get the engine's for other languages you say are interpreted, it would be easier to omit whether it's interpreted or compiled, because it doesn't have much bearing on the qualities of the language itself, and people have different views of what a compiled or an interpreted language is.

I.E.
Some people would assume that compiled can mean that the code is converted to the bytecode that the processor can run.

Another group of people would assume that compiled means that it's converted to bytecode that can be run by a VM.

Likewise for the word 'interpreted'

Some people would assume that interpreted is any bytecode that isn't executed by the processor, rather a VM.

Another person would assume that interpreted implies that the code is executed directly by reading the text without turning it into VM readable bytecode.


Just a suggestion o.O

Author:  tez_h [ Wed Apr 05, 2006 5:20 am ]
Post subject:  Compiled, interpreted

Chinchilla wrote:
<snip>

I.E.
Some people would assume that compiled can mean that the code is converted to the bytecode that the processor can run.

Another group of people would assume that compiled means that it's converted to bytecode that can be run by a VM.

Likewise for the word 'interpreted'

Some people would assume that interpreted is any bytecode that isn't executed by the processor, rather a VM.

Another person would assume that interpreted implies that the code is executed directly by reading the text without turning it into VM readable bytecode.


As far as I understand, compilation is strictly the transformation of a program from one representation or language into another. Interpretation is the execution of a program in some language or representation. Languages are, strictly, agnostic of compilers and interpreters, as their semantics can be expressed in many ways (denotational, abstract machine, etc).

So, for example, gcc is a compiler from C to machine code (well, actually, it compiles into an intermediate representation first, so that the back-end is in fact modular). Java, using the usualy toolchain, is compiled into bytecode. A JVM is a java-bytecode interpreter. A computer is a machine code interpreter implemented in hardware. Note, also, that compilation isn't always from very-high-level to very-low-level (but of course it's much easier that way round). GHC compiles (at least it once did) Haskell into C. Well, C isn't particularly high-level, but it ain't machine code or bytecode.

This is somewhat orthogonal to any point about languages suitable for learning/teaching. I thought I'd just point out that the terms "compile" and "interpret" have strict meaning, even though they are loosely used and abused, and that in fact compilation and interpretation is independent of most language definitions, syntaxes, and semantics (eg. there exists a C interpreter, even though it might commonly be thought of as a "compiled language", whatever that's supposed to mean).

-Tez

Author:  Anonymous [ Sun May 28, 2006 8:47 pm ]
Post subject: 

I've only programmed in Turing mainly, and a tiny bit in Java (Holtsoft's Ready to Program), and Python which I downloaded myself, because I heard Nasa used it.

I'd have to say Java is boring, Turing is easy, Python seems like fun.

I have Bloodshed C++ and Ruby, and I don't like those two because they seem like bulky slow programs compared to lightweight Turing, Java, and Python.

VB seems weird because I don't like the dragging of buttons and then double clicking to enter the coding.

Verdict: I like Python, and if the school gets it, I would work on it more.

Author:  Cervantes [ Sun May 28, 2006 9:54 pm ]
Post subject: 

vahnx wrote:

I have Bloodshed C++ and Ruby, and I don't like those two because they seem like bulky slow programs compared to lightweight Turing, Java, and Python.


Are you talking about the programming language themselves, or the IDE's that you used to program in? There is a world of difference.

C++ is one of the fastest languages out there. Ruby is rather slow, though it's on the same level as Turing. Ruby, however, makes up for this in terms of it's sheer power (in regard to the human reading/making the code, not the computer interpreting it).

Java is by no means lightweight. It has a huge library and is also quite slow.

vahnx wrote:
Verdict: I like Python, and if the school gets it, I would work on it more.

That's great, but school will only take you so far. So much learning in compsci is done outside the classroom. Why? Because there's so many resources available online. If you want to learn Python, don't wait for your class (because I can just about guarentee that you'll never learn Python as a class); jump right in from home!

Author:  neufelni [ Thu Jun 15, 2006 11:04 am ]
Post subject: 

If you want to learn Python, a great tutorial to get started with is http://www.byteofpython.info/read/

Author:  DemonZ [ Wed Nov 01, 2006 9:31 pm ]
Post subject: 

Hey would switching from turing to DarkBasic be a good idea, since that language is purely for games and its simplified to the maximum, meaning u barely have to right any code to get something to work, plus it comes with its own object editor and creator

Author:  wtd [ Mon Nov 06, 2006 12:03 am ]
Post subject: 

DemonZ wrote:
Hey would switching from turing to DarkBasic be a good idea, since that language is purely for games and its simplified to the maximum, meaning u barely have to right any code to get something to work, plus it comes with its own object editor and creator


If you want to write games, yes.

If you want to be a programmer, then it's absolutely the wrong direction to go.

Author:  DemonZ [ Mon Nov 06, 2006 1:05 am ]
Post subject: 

yah then I think im gonna take the writing games dirrection, and maybe Ill think about programming, I cant say being a game maker is better than a programmer, so I might go both ways

Author:  ericfourfour [ Mon Nov 06, 2006 3:10 pm ]
Post subject: 

I think don't think wtd meant you would become a game developer (as a profession) if you used dark basic. Also why not get two birds with one stone and learn game programming. www.gamedev.net

Author:  wtd [ Mon Nov 06, 2006 3:24 pm ]
Post subject: 

Let me offer this reminder:

"Game programming" is a subset of programming. General programming skills will always be beneficial in the creation of games. The reverse cannot be said.

Author:  Danjen [ Mon Sep 03, 2007 3:07 pm ]
Post subject:  Re: Where to go next?

Can someone give me a link to any of these languages?

Author:  rizzix [ Mon Sep 03, 2007 3:36 pm ]
Post subject: 

Cervantes @ Sun May 28, 2006 9:54 pm wrote:
Java is by no means lightweight. It has a huge library and is also quite slow.


Wow, old post, but fundamentally flawed. If Java is considered quite slow, then Ruby does not even execute! It's relatively dead frozen.
Java's slowness is only visible in it's startup time. It's fast almost everywhere else. And yes, Java is a great platform for games. As a matter of fact, JRuby runs faster than Ruby.

Java's flaw (as rdrake has repeatedly pointed out) is its memory consumption. There's been research going on in developing a micro jvm for limited small devices. Part of this research involves reducing the memory used by Java apps in general. Hopefully in time some of those ideas creep back into the mainstream jvm. Take a look at Squawk VM, which is an outcome of this research.

Here are some benchmarks (thanks to haskell (the compsci member) for bringing up this site):
Java vs GCC's C
Ruby vs. GCC's C

I've compared to GCC's C, because I've found GCC's C to be the most optimal (in terms of speed and memory) of all the languages listed there!

But, here's one comparing Ruby with Java directly:
Ruby vs. Java

Author:  rizzix [ Mon Sep 03, 2007 3:40 pm ]
Post subject:  Re: Where to go next?

Danjen @ Mon Sep 03, 2007 3:07 pm wrote:
Can someone give me a link to any of these languages?


Google search the language in question.

Author:  Cervantes [ Mon Sep 03, 2007 4:20 pm ]
Post subject: 

rizzix @ Mon Sep 03, 2007 3:36 pm wrote:
Cervantes @ Sun May 28, 2006 9:54 pm wrote:
Java is by no means lightweight. It has a huge library and is also quite slow.


Wow, old post, but fundamentally flawed.


Yeah, I was skimming through this page looking for the new post. I happened to read that comment I made and thought the same thing you did. Neat comparisons.

Author:  Forumer [ Wed Dec 03, 2008 7:48 am ]
Post subject:  RE:Where to go next?

c++ for gaming c# for server? java...i heard its not that good..too high usage of ram.

Author:  goroyoshi [ Sat Apr 09, 2011 4:18 pm ]
Post subject:  RE:Where to go next?

what about lua


: