Valhalla Legends Forums Archive | General Programming | Discussion of what to recommend to newbies

AuthorMessageTime
St0rm.iD
I've been seeing a large number of non-programmers coming here who want to make bots. They have all been recommended VB < .NET and have been given a download location. This leads to stupid questions about CSB and nagging I WANT I WANT posts.

I propose we stop recommending VB completely. I'm not here to preach about why Python is a better alternative :), but I truly think that VB needs to start to stop gaining new users.

First, it's ancient. It's being phased out and, as Grok has said countless times, there are no new jobs being created for it. Microsoft has/will soon terminate support for it.

It also teaches poor style; it promotes anti-modularization (most newbies put all the code in form1), poor naming conventions (they tend to stick with the default names), giving someone too much power with too little experience (they get a finished product and they think it is coded perfectly because it works, thus sticking to their old style), and throws speed totally out the window (actually, that's not too big a deal).

Finally, it's too easy to use CSB and make a bot. The reason for many of the bot restrictions in the first place is because of the abuse of them, which CSB only increases. If someone works their ass off and reverses the algorithms and protocol, they won't risk losing their access (OK OK OK, I admit that I stole CheckRevision, but I did put in the time reversing the protocol without any help/bnetdocs/whatever).

I'm open to suggestions for a teaching language. Preferably it would be something that could show results quickly, yet require the user to think. It should probably have OOP and be maintained.

I'm thinking Python, Java, or C#.
November 25, 2003, 8:07 PM
iago
I like telling newbies to use VB because it's easy for them to go off and learn and I don't have to answer tech support questions. For somebody who isn't serious about wanting to learn, it's pointless to try to make them learn something difficult because they won't get anywhere. For somebody who's serious, I would recommend C or C++.
November 25, 2003, 9:13 PM
Mitosis
Im gunna go C++ and something else, just not sure yet. I know some basic C++ but when I get my new computer I plan to spend ALOT of time doing it, one other question though, if I bought C++.NET would it work with normal C++ code? Or do I have to learn new stuff?
November 25, 2003, 10:35 PM
iago
Visual Studio .net can compile regular C++ code.
November 25, 2003, 10:38 PM
Kp
[quote author=iago link=board=5;threadid=3841;start=0#msg31391 date=1069794824]
For somebody who isn't serious about wanting to learn, it's pointless to try to make them learn something difficult because they won't get anywhere. For somebody who's serious, I would recommend C or C++.[/quote]

This is exactly why I think you ought to recommend C/C++ (or some other nontrivial language) exclusively. If the querent can't even be bothered to learn a nontrivial language, is it really good having them around?
November 25, 2003, 11:04 PM
Myndfyr
C#, IMHO, is a relatively easy language to learn if you can get past all of the lingo. Its support for modularity is worlds better than Java's (if you don't believe me, I will refer to my paper discussing the OOP differences for the two languages that I gave to my CSE 210 teacher last semester - when I actually had to educate him in the differences and make a defense for it for my honors project). Beyond that, it's not particularly *easy* to do much of anything *useful* in C# - if you want to access a database, you need to use VS's wizards, which end up giving you useless crap anyway, or go through a huge hassle designing an XML schema and running the custom tool to develop a dataset class. To communicate over Sockets, you actually have to know something about Sockets programming - and you also have to understand how to convert between the Unicode character set and the 8-bit character set. While it's visual (encouraging RAD), there haven't been enough design-time tools yet developed for lUsers to mooch, e.g., CSB.

Although, I will grant, my bot API might end up being the .NET CSB equivalent....

I started out with Javascript, taking Thau's Javascript Tutorial on Webmonkey. That's a good step into structured programming, as it taught me the importance of writing well-designed subroutines and the use of abstraction. While it's arguable that you can't do very much that is useful with it, it's still a good primer, and many people already know part of the HTML DOM, because many computer enthusaists understand how to make web pages.

Ultimately, I think either Java or C# are the way to go for newbies. C++ is a bit much - and to be perfectly honest, if we want to introduce C++ at some point, C# would be a good place to start, because they can't break it quite so easily. Pointers are available, and once you get things started in C#, there are a few hurdles to leap, but by and large, they are syntactically similar.

*my two cents* =)

--Rob
November 26, 2003, 1:01 AM
Tuberload
Just because Java may be a fairly straight forward language that is easy to learn, does not mean a programmer will learn proper programming... Java is a language made by professionals for professionals. If you program poorly your program will reflect that. While I will agree Visual Basic is not the way to go for beginning programmers, I disagree that just because they use a language such as Java, that they will learn to program correctly. A language is just a tool used to solve a specific set of problems. Accept for C/C++, which seems to handle them all. :)

C# was Microsoft's response to Java, and I would like to here how it's support for modularity is so much better seeing it pretty much follows the same object model. Everything about Java is object-oriented besides it's primitive data types such as ints and floats.

Both C# and Java are syntactically similar to C, were C++ gets it's general syntax. C++ just makes larger programs easier to manage, and maintain. While C, and ASM if necessary, are excellent choices for time critical algorithms, and fairly small programs.

I am not an expert in any of these areas, but my main point is people that aren't interested in programming in the first place do not need a better language, they need a new hobby.
November 27, 2003, 9:38 AM
Kp
[quote author=Tuberload link=board=5;threadid=3841;start=0#msg31967 date=1069925927]Java is a language made by professionals for professionals.[/quote]

I tend to disagree on this point. Some of the things prohibited by the Java compiler seem like absolutely absurd requirements unless you're working under the assumption the programmer is an idiot who must be protected from all constructs he didn't specifically intend (and possibly even from some of those). Offhand, I can't recall a Java compiler ever implicitly doing the "right thing", and very often it simply refused to do anything implicit at all. For example, Java is the only language I've seen where it's illegal to assign an int a value, then do if (int_name) { stuff } and have it work. In Java, you get a compile time error that you can't use an int there; all the other languages I've worked with (C, C++, Perl) assume != 0 as the suffix to your statement, if you don't provide one. Java forces you to explicitly say if (int_name != 0).

[quote author=Tuberload link=board=5;threadid=3841;start=0#msg31967 date=1069925927]
Both C# and Java are syntactically similar to C, were C++ gets it's general syntax. C++ just makes larger programs easier to manage, and maintain. While C, and ASM if necessary, are excellent choices for time critical algorithms, and fairly small programs.[/quote]

Having worked with Java, C, and C++, I can say that Java and C syntax are quite different. C++ extended upon C's syntax, and Java copied mostly the extended parts. This is really not that surprising, since C is not an OO language, but Java and C++ are OO.
November 27, 2003, 4:12 PM
Tuberload
[quote author=Kp link=board=5;threadid=3841;start=0#msg32025 date=1069949544]
[quote author=Tuberload link=board=5;threadid=3841;start=0#msg31967 date=1069925927]Java is a language made by professionals for professionals.[/quote]

I tend to disagree on this point. Some of the things prohibited by the Java compiler seem like absolutely absurd requirements unless you're working under the assumption the programmer is an idiot who must be protected from all constructs he didn't specifically intend (and possibly even from some of those). Offhand, I can't recall a Java compiler ever implicitly doing the "right thing", and very often it simply refused to do anything implicit at all. For example, Java is the only language I've seen where it's illegal to assign an int a value, then do if (int_name) { stuff } and have it work. In Java, you get a compile time error that you can't use an int there; all the other languages I've worked with (C, C++, Perl) assume != 0 as the suffix to your statement, if you don't provide one. Java forces you to explicitly say if (int_name != 0).

[quote author=Tuberload link=board=5;threadid=3841;start=0#msg31967 date=1069925927]
Both C# and Java are syntactically similar to C, were C++ gets it's general syntax. C++ just makes larger programs easier to manage, and maintain. While C, and ASM if necessary, are excellent choices for time critical algorithms, and fairly small programs.[/quote]

Having worked with Java, C, and C++, I can say that Java and C syntax are quite different. C++ extended upon C's syntax, and Java copied mostly the extended parts. This is really not that surprising, since C is not an OO language, but Java and C++ are OO.
[/quote]

Yes but all of it's general language syntax such as for/do/while loops, if/else/switch, and method declaration formats all are the same as C, and it copies C++'s extended parts as you say. I have only limited experience in either C/C++ but they look the same to me if you ignore the OO requirements imposed by Java.

Java programs created using bad habits will exhibit that, is why I made the comment it is for professionals, but I guess any language besides Visual Basics will do that. I do think Java puts a little to much effort in preventing runtime errors, and limits some unnecessary things, but that does not make a language unprofessional. I still think, besides your obvious discontent for Java Kp, that it is an excellent language. ;D
November 27, 2003, 4:37 PM
Kp
[quote author=Tuberload link=board=5;threadid=3841;start=0#msg32027 date=1069951063]I do think Java puts a little to much effort in preventing runtime errors, and limits some unnecessary things, but that does not make a language unprofessional.[/quote]

I didn't call the language unprofessional. I disagreed with your assertion that it was "by professionals for professionals". ;)
November 27, 2003, 5:00 PM
Tuberload
[quote author=Kp link=board=5;threadid=3841;start=0#msg32034 date=1069952453]
[quote author=Tuberload link=board=5;threadid=3841;start=0#msg32027 date=1069951063]I do think Java puts a little to much effort in preventing runtime errors, and limits some unnecessary things, but that does not make a language unprofessional.[/quote]

I didn't call the language unprofessional. I disagreed with your assertion that it was "by professionals for professionals". ;)
[/quote]

Would you prefer "by hobbyists for professionals"?
November 28, 2003, 10:17 AM
St0rm.iD
"by professionals for everyone"

Dammit, how about we all just get together and make "The Bot Making Kit"? We can make it just like VB, but you don't have to write code, AND it has the paperclip to help you out.
November 29, 2003, 2:03 AM
Hitmen
[quote author=St0rm.iD link=board=5;threadid=3841;start=0#msg32325 date=1070071419]
AND it has the paperclip to help you out.
[/quote]
Oh come on, even newbs hate the paperclip!
November 29, 2003, 4:49 AM
Grok
I agree with the tenor of this topic, but would suggest we recommend C# in place of VB.

Note that I said "in place of VB", meaning where we would have recommended Visual Basic 6.0 to a newbie, they will be better off overall learning C# instead. The reasons are simple, and probably arguable, but are my first thoughts and not a well-developed treatment of the issue.

1) The "help me with VB" botnewbs are assumed to have no other language experience.

2) They are likely to be Microsoft Windows users, and should at be most comfortable with VS.NET's IDE as their first experience.

3) C# promotes good computer science from the ground up.

4) C# addresses weaknesses in VB, Java, C, C++, while allowing newbs to write programs as easily as they would have written one in Visual Basic, just starting out.

Arguments against: .NET while claiming to be platform independent, is only so on Windows :P But only because the CLR hasn't been implemented anywhere else (yet).
November 29, 2003, 4:55 AM
St0rm.iD
Mono works (kinda)

My vote is with Python and/or Java.
November 29, 2003, 5:02 AM
Tuberload
[quote author=St0rm.iD link=board=5;threadid=3841;start=0#msg32325 date=1070071419]
"by professionals for everyone"

Dammit, how about we all just get together and make "The Bot Making Kit"? We can make it just like VB, but you don't have to write code, AND it has the paperclip to help you out.
[/quote]

I have actually been thinking of doing this, but then again do we really want to ruin Java on these forums as well. ;D

As for the language for newbies I also vote for Java, or Python (only based of what I have read about it, not experience) or C# if it is a must.
November 29, 2003, 10:45 AM
St0rm.iD
www.jython.org

That's how I moved from Java to Python.
November 29, 2003, 5:12 PM
Kp
[quote author=Grok link=board=5;threadid=3841;start=0#msg32347 date=1070081709]
3) C# promotes good computer science from the ground up.

4) C# addresses weaknesses in VB, Java, C, C++, while allowing newbs to write programs as easily as they would have written one in Visual Basic, just starting out.

Arguments against: .NET while claiming to be platform independent, is only so on Windows :P But only because the CLR hasn't been implemented anywhere else (yet).
[/quote]

Never having actually seen anything about coding in C#, I'm curious what it does to deserve those two points in its favor. What practices is it promoting that others don't? Or did you only mean that it doesn't promote bad practices? I've heard that C#, like VB, is supposed to be good for RAD - what other things does it address in the earlier languages that you think are "weaknesses"? Though this is in response to Grok, I'd welcome commentary from anyone. This may be better split off as a separate thread though.
November 29, 2003, 5:19 PM
Tuberload
[quote author=Kp link=board=5;threadid=3841;start=15#msg32414 date=1070126385]
[quote author=Grok link=board=5;threadid=3841;start=0#msg32347 date=1070081709]
3) C# promotes good computer science from the ground up.

4) C# addresses weaknesses in VB, Java, C, C++, while allowing newbs to write programs as easily as they would have written one in Visual Basic, just starting out.

Arguments against: .NET while claiming to be platform independent, is only so on Windows :P But only because the CLR hasn't been implemented anywhere else (yet).
[/quote]

Never having actually seen anything about coding in C#, I'm curious what it does to deserve those two points in its favor. What practices is it promoting that others don't? Or did you only mean that it doesn't promote bad practices? I've heard that C#, like VB, is supposed to be good for RAD - what other things does it address in the earlier languages that you think are "weaknesses"? Though this is in response to Grok, I'd welcome commentary from anyone. This may be better split off as a separate thread though.
[/quote]

I had the same questions as you Kp, but didn't post due to my complete lack of knowledge of C# other than it is a Java variant in my eyes. I would like to hear its benefits over Java though, so I can determine whether I want to give it a go or not. Ever since my Visual Basic days, I have shied away from using Microsoft development platforms. I just personally don’t understand the need of having multiple languages that all runs off the same framework, but this is once again an opinion not based off of fact.

What I would really like to know is it really worth learning the .NET suite, or is sticking with Java and GNU C/C++ compilers sufficient? I do not mean that other languages are not worthy tools to use, but Java and C/C++ seems to have the largest job market, not counting other web development languages.
November 29, 2003, 8:30 PM
St0rm.iD
I've actually found the .NET class library rather lacking for some of the stuff I do.
November 30, 2003, 1:53 AM

Search