
-----------------------------------
ryan.s
Thu Nov 01, 2012 8:02 am

Languages used in class
-----------------------------------
Hi,

i was just wondering, why are we forced to learn a certain language in classes like comsci? Especially an obsolete language such as turing.

I really wish schools in ontario would abandon turing finally, because learning it doesnt benifit students as much in the future as it would if we learned something like c++ right off the start.

I feel like it is unfair that some schools get to use real programming languages like C / C++ / JAVA, while we are stuck using turing which is slow, boring, limited, and not challenging enough. We aren't even learning JAVA untill like part way through grade 12, but even so I would prefer C/C++.

I understand that they can only teach one language to the class but I think the thing that is really unfair is that you are not allowed to hand in assignments written in another programming language, even if you can fulfil or exceed all the requirements.

I just think it is really unfortunate that we are learning Turing, as it messes with your understanding of other languages somewhat because it does so many things completely differently and in a non standard, illogical way (see locate and locatexy). I wish they had said in the course description that the course is pretty much all turing

-----------------------------------
QuantumPhysics
Thu Nov 01, 2012 8:50 am

RE:Languages used in class
-----------------------------------
They find the C line of system to be too difficult. Hey, personally I would prefer to learn Vala, Lisp, C, or even LXML, but you don't see me complaining. If you persue to clarify. You can take it up with the schoolboard, go to them with a presentation on why you think this should be changed.

-----------------------------------
DemonWasp
Thu Nov 01, 2012 9:58 am

RE:Languages used in class
-----------------------------------
The problem with C and C++ is that C is fairly complicated, and C++ is absurdly overcomplicated. Neither language can feasibly be used if it must be taught to students (along with basic programming constructs) in a single term. Both languages are also incredibly unforgiving and fairly difficult to set up (compiler, linker, IDE all need to talk to each other, plus then there's Makefiles).

The problem with Java is that it's not designed with teaching in mind. The language is simple and straightforward (and fairly uncomplicated) but it's got a few throwbacks to the C era that don't make any sense to new programmers. Plus, the language is so verbose it's usually only written with the help of a fairly advanced IDE, which is a lot of additional complication that doesn't really help the learning experience.

Languages like Scala, Python, Scheme, and LISP are becoming more common at the university level because of their concise, expressive syntax and powerful built-in constructs, as well as the ease of "getting started" in those languages. It will be a few years before high schools pick up on the change (mostly because doing so will require re-writing the curriculum, a huge task).

@QuantumPhysics: Vala looks mildly interesting. LXML appears to be a Python library for processing XML, so I don't know what you're talking about there.

-----------------------------------
TerranceN
Thu Nov 01, 2012 12:24 pm

RE:Languages used in class
-----------------------------------
"turing which is slow, boring, limited, and not challenging enough"

As long as you learn the important concepts the language doesn't really matter for the class. But from the sounds of it, you're hitting the limitations of using Turing. If those other languages interest you, you should learn them and use them in your spare time.

"why are we forced to learn a certain language in classes like comsci? Especially an obsolete language such as turing"

I know the feeling, high school cs is all over the board in terms of quality. No one who has actually worked in computer science in the last 10 years would chose Turing over much more powerful, expressive, and much easier to understand languages like Python.

"as it messes with your understanding of other languages somewhat because it does so many things completely differently and in a non standard, illogical way (see locate and locatexy)"

You will find differences like that in pretty much every language and library you use. In fact for most languages you have to talk to the OS or use a library to draw things, which are usually all different.

@DemonWasp: C/C++ could probably be fine for teaching if an appropriate subset of the language is used (like Scheme and Racket teaching languages).

-----------------------------------
Tony
Thu Nov 01, 2012 1:37 pm

Re: Languages used in class
-----------------------------------
I think the thing that is really unfair is that you are not allowed to hand in assignments written in another programming language, even if you can fulfil or exceed all the requirements.
It depends on the teacher and your ability to reason with them; but it introduces a lot of complexities for them. They might not be familiar enough with your language of choice to help you with questions or even grade assignments. Some languages make certain kinds of problems much easier, while others are much more difficult (e.g. string manipulations are trivial with Python. C++ requires complex setup just to get basic graphics going). A different paradigm (e.g. Scheme that would be heavy on recursion and functional programming) would likely send you on a very different path of reasoning from anyone else in your class.

-----------------------------------
DemonWasp
Thu Nov 01, 2012 1:59 pm

Re: RE:Languages used in class
-----------------------------------
C/C++ could probably be fine for teaching if an appropriate subset of the language is used

The problem there is defining a suitable subset. Let's start with C++, and let's ignore the basics of the language (addition, what-is-a-statement, conditionals, looping, etc, which are common to most languages).

Well, you definitely need to learn about stack allocation and heap allocation. That implies you need to understand object lifetimes, and either use exclusively stack allocation (impractical for real applications) or learn to use pointers correctly (maybe unique_ptr and shared_ptr). Well, pointers open a whole ridiculous kettle of fish and preferably you would use references where possible (same general use, but safer), so let's say people learn about references.

Well, now you want to put items in a list (vector) or an array, without constructing them in-place (you can construct them in place, but that requires knowledge of some more advanced C++ features surrounding construction and templates). So you need to implement (at least) copy constructors and assignment operators. So I guess you may as well learn about all kinds of operator overloading, as well as the new C++11 move-assignment and move-constructors.

Oh, and you're using the STL, so you should have a passing knowledge of templates.

Since you already have objects in a list, you probably want to sort them. Well, that implies either you overload operator