A note about the choices, they all have sub-optimal garbage collection, which means they annoyingly use an ass load more memory than they should. Python is probably the worst offender of the bunch.
A note about the choices, they all have sub-optimal garbage collection, which means they annoyingly use an ass load more memory than they should. Python is probably the worst offender of the bunch.
O_oI'm not defending C++ here... it has its issues, as do all languages. You mention some [of those issues] - e.g. dynamic binding.
I can't speak for Yarin, but you have at the least missed my point.
Yes, all languages have their sins, but "strong typing"/"weak typing"/"dynamic binding"/"static binding" are not to be counted among the sins. Using each well improves the quality of an interface.
I spoke of "use polymorphism" in C++; I spokse "type erasure" and how it makes the standard tools so much better; those C++ tools only exist thanks to a combination of all four of those things.
Your fear of those tools is silly and pointless.
[Edit]
Also, though nothing of nothing, I recall C#4 has support for purely "dynamic binding" and "duck typing".
[/Edit]
Soma
“Salem Was Wrong!” -- Pedant Necromancer
“Four isn't random!” -- Gibbering Mouther
There is optional static typing in Python.
In my opinion, for a person that's never programmed before, the ideal initial learning language would be one where the syntax is fairly intuitive to a non-programmer, and the class assignments would be simple to implement programs. Having an interactive mode would be similar to using a calculator. This learning language would only be used for a month or so, and then the student would switch to one of the common languages currently in use (C, C++, C#, Java, Python, ... ). The learning language could be something like a sub-set of Basic, used just enough to get an idea of what's going on.
Again in my opinion, somewhere along the line, it would also help to spend about a month with some type of assembly language, with a source level debugger / emulator to allow the student to step through the code to see what is happening. If X86, I would use a sub-set of the instructions and keep the example programs simple.