Moderators: phlip, Moderators General, Prelates

Mortabis wrote:Java, IMO, is the worst choice, since it's obsessively OOP and not in a good way like Ruby. Hell, input, or at least the only ways I know of obtaining it, is through objects. This makes no sense, since, for instance, command line output is not object-oriented.
Rysto wrote:You going to justify this at all? Why can't you model I/O with objects?
But C just isnt fun. I think its important for new people to actually enjoy the learning process rather than get frustrated about quirks of the language theyre using, which is why python is probably a better choice imo. Yeah, you need to learn C at some point, but why should it be a first language?Mortabis wrote:
And if anyone in reading this thread is just learning to program, the language I recommend depends on what you want to do. If you want to learn actual Computer Science, which is NOT the same thing as programming, start with Python. If you want to learn to program start with C.
poohat wrote:Rysto wrote:You going to justify this at all? Why can't you model I/O with objects?
You can, its just confusing for beginners and a bit pathological - no language would even think about doing it unless it had made a prior commitment to use OO for everything.
puts "Hello, world"class myfirstjavaprog
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}Some of us exist to find out what can and can't be done.
Others exist to hold the beer.
btilly wrote:I think you're confusing modeling everything with OO with modeling everything verbosely with OO. Compare Java to Ruby, which takes OO everywhere considerably farther than Java. (Quick, what methods can you call on 1?) But Ruby hides the OO behind some smart defaults so that it disappears under the covers until you need it.
kingsteve@Ubuntu~$ irb
>> 1.methods
=> ["%", "inspect", "<<", "singleton_method_added", "&", "clone", ">>", "method", "round", "public_methods", "instance_variable_defined?", "divmod", "equal?", "freeze", "integer?", "chr", "*", "+", "to_i", "methods", "gem", "respond_to?", "-", "upto", "between?", "prec", "truncate", "/", "dup", "instance_variables", "__id__", "modulo", "object_id", "succ", "|", "eql?", "zero?", "require", "~", "id", "to_f", "singleton_methods", "send", "prec_i", "taint", "step", "to_int", "frozen?", "instance_variable_get", "__send__", "^", "instance_of?", "remainder", "to_a", "+@", "nonzero?", "-@", "type", "**", "floor", "<", "protected_methods", "<=>", "instance_eval", "==", "prec_f", "quo", ">", "display", "===", "downto", "id2name", "size", "instance_variable_set", "kind_of?", "abs", "extend", ">=", "next", "to_s", "<=", "coerce", "hash", "ceil", "class", "tainted?", "=~", "private_methods", "div", "nil?", "untaint", "times", "to_sym", "[]", "is_a?"]poohat wrote:But C just isnt fun.
I meant compared to more expressive higher level languages where the logical structure of your code/ideas doesnt get distorted to make it fit into very rigid paradigms, along with all the memory-management tediousness.ash.gti wrote:In your opinion... Now, I may not love C, but I do very much enjoy programming, even in C. I still think C++ should be most *serious* programmers second or third language at the latest. Because of simply how much it teaches you about programming, about styles, about coding practices, etc.
Rysto wrote:Mortabis wrote:Java, IMO, is the worst choice, since it's obsessively OOP and not in a good way like Ruby. Hell, input, or at least the only ways I know of obtaining it, is through objects. This makes no sense, since, for instance, command line output is not object-oriented.
You going to justify this at all? Why can't you model I/O with objects?

Output in Java is not through objects. It's a simple function: System.out.printf() (Which is a little wordy, but so is the rest of java). Whereas input is an object.
It Should Be Real wrote:Fuck the wizard.
We're doing this manually.
Dark Shikari wrote:I'd say the best three newbie languages are C (NOT C++), Java, Python, and Scheme, depending on how you want to approach the problem of learning programming.
Kirby54925 wrote:FP > OOP for programming in general, especially for n00bs.
As hardware and software became increasingly complex, researchers studied ways in which software quality could be maintained. Object-oriented programming was deployed in part as an attempt to address this problem by strongly emphasizing discrete units of programming logic and re-usability in software.
This is a bit of a strange claim: theres no dichotomy between functional programming and OOP, unless by OOP you specifically mean "OOP in the way that Smalltalk/Java does it (where objects have state)". The generic function approach to OOP (http://en.wikipedia.org/wiki/Generic_function) used in languages such as the common lisp object system allows you to program using standard OOP techniques (inheritence, polymorphism, etc) without the need to talk about objects 'owning' variables/methods or having any state.ash.gti wrote:OO was designed from the get go as a maintainable approach. Functional in almost every case (unless your using very very specifically designed hardware) will out preform OO, however functional is harder to maintain. In most cases code maintainability is equally, or sometimes more important than the program running blazing fast.
AbAbsurd wrote:N00bs should suffer... so that in the future they will be able to learn any language in 5 minutes!
IMHO, teaching OO languages before imperative addicts people. They end up wanting to use OO to code square roots programs, and the simplest (in the sense of having a neat sourcecode) chess game I have ever seen was coded in C using the Windows API by a first semester student (ok, the WinAPI bit was a little too much, he could have used RGL or something).
And functional programming scares anyone who isn't a mathematician at heart. Stick with good ol' ANSI C in the beggining, teach them how to do inimaginable classes in C++, to rebuild a BIOS in ASM, meld their brains with a Brainfuck Interpreter written in Malbolge and only then let them play with real world stuff.
No. I'm learning Pascal now (against my will), and it's a terrible introduction to programming. So many things are done in really dumb ways that would probably make transitioning to a 'real' languages more difficult. The lack of scope, no typecasting, the lack of a 'break' command for loops, not being able to initialize variables in their declaration, no += or similar operators, etc. are all really annoying. Also, the language is really unstandardized. Some compilers do allow operators such as += or the declaration of variables within a function, but then others don't. It's a pain to work with, and I would definitely not recommend it for any purpose.Dusty Chalk wrote:I cut my teeth on Pascal -- I still think it's a great choice.
_=0,w=-1,(*t)(int,int);a()??<char*p="[gd\
~/d~/\\b\x7F\177l*~/~djal{x}h!\005h";(++w
<033)?(putchar((*t)(w??(p:>,w?_:0XD)),a()
):0;%>O(x,l)??<_='['/7;{return!(x%(_-11))
?x??'l:x^(1+ ++l);}??>main(){t=&O;w=a();}int mx = toolkit.getDefaultToolkit().getScreenSize().width;
int my = toolkit.getDefaultToolkit().getScreenSize().height;zenten wrote:As to worst language, anything has to be better than Turing...
a toddler wrote:i learnt programming on the ultimate programming software for n00bs.... Visual Basic for windows!
it is so damn easy its funny.
by comparison, when i tried to tackle C++, i nearly broke.
for noobs, definitely VB.
Cosmologicon wrote:Emu* implemented a naive east-first strategy and ran it for an hour, producing results that rivaled many sophisticated strategies, visiting 614 cells. For this, Emu* is awarded Best Deterministic Algorithm!
TheGZeus wrote:zenten wrote:As to worst language, anything has to be better than Turing...
Well, brainfuck IS Turing...
zenten wrote:TheGZeus wrote:zenten wrote:As to worst language, anything has to be better than Turing...
Well, brainfuck IS Turing...
Brainfuck was developed by the University of Toronto?
TheGZeus wrote:zenten wrote:TheGZeus wrote:zenten wrote:As to worst language, anything has to be better than Turing...
Well, brainfuck IS Turing...
Brainfuck was developed by the University of Toronto?
Wait, tat's actually a programming language? i was referring to it's syntax being the same as the Universal Turing Machine.
Emu* wrote:Don't learn specific languages - learn how to write good algorithms. I didn't realise Java had for-each until I learnt about its existence in PHP.
Users browsing this forum: No registered users and 8 guests