Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Where to go next?
Index -> Programming, Turing -> Turing Help
Goto page 1, 2, 3, 4, 5  Next
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
wtd




PostPosted: 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
Sponsor
Sponsor
Sponsor
sponsor
Tony




PostPosted: Thu Oct 28, 2004 11:59 pm   Post subject: (No 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.
Latest from compsci.ca/blog: Tony's programming blog. DWITE - a programming contest.
wtd




PostPosted: Fri Oct 29, 2004 6:32 pm   Post subject: (No 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.
rizzix




PostPosted: Sat Oct 30, 2004 11:30 pm   Post subject: (No subject)

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




PostPosted: Sat Oct 30, 2004 11:35 pm   Post subject: (No 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
MyPistolsIn3D




PostPosted: Tue Nov 02, 2004 6:37 pm   Post subject: (No subject)

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




PostPosted: Tue Nov 02, 2004 6:50 pm   Post subject: (No 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
apomb




PostPosted: Wed Nov 03, 2004 1:02 am   Post subject: (No 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
Sponsor
Sponsor
Sponsor
sponsor
wtd




PostPosted: Wed Nov 03, 2004 1:23 am   Post subject: (No 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++.
rizzix




PostPosted: Wed Nov 03, 2004 7:38 pm   Post subject: (No 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.
wtd




PostPosted: Wed Nov 03, 2004 7:47 pm   Post subject: (No 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
bugzpodder




PostPosted: Wed Nov 03, 2004 9:38 pm   Post subject: (No 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.
zylum




PostPosted: Wed Nov 03, 2004 10:16 pm   Post subject: (No 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.
apomb




PostPosted: Thu Nov 04, 2004 12:16 am   Post subject: (No 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.
wtd




PostPosted: Thu Nov 04, 2004 12:30 am   Post subject: (No 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
Display posts from previous:   
   Index -> Programming, Turing -> Turing Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 5  [ 64 Posts ]
Goto page 1, 2, 3, 4, 5  Next
Jump to:   


Style:  
Search: