Fibriel wrote:
By understanding the difference between programming languages, the user understands what those differences mean. Those meanings are global to programming (I should think memorizing the common variable types such as byte int etc. would be pretty important) and are knowledge that will be useful and valuable regardless of the language selected, and as such, ought to be the first things covered.
Sorry for the previous misunderstanding. I do agree that understanding basic variable types like byte, int, etc are important. I thought you were talking about the actual differences between languages.
Quote:
If you select a language that has static typing, you are damn well going to need to know what static typing is, and if you don't - it would be a good idea for you to know ahead of time that your language's dynamic typing is not the case with every language. Bonus if you learn to pretend your language is statically typed so that you develop the practice of not relying too much on dynamic typing (which where available can still cause ambiguity and major problems.)
I still disagree with this in that beginners shouldn't have to worry about these things. Whether their used language is statically typed and another dynamically typed, it shouldn't matter. You advise beginners to start with a scripting language then to a different language. You haven't provided a good enough reason for this indirection. Your counter arguments include describing the complexities of low-level languages, but you totally forget about other non-scripting high level languages. This is the one of the issues I have with your advice.
Quote:
Quote:
I understand what you're saying but it sounds like you're implying that languages that require compilation are hard to work with.
That's because they are much like a labyrinth; complicated and full of distracting scenery and potential pitfalls.
A beginner doesn't know the way through and will spend ages figuring it out - seasoned programmers have been here many times before, they remember the way, and so can travel through it much faster and better adapt when the ******* dungeon master changes the layout a little bit.
(If that comparison was a little too fanciful I apologize. The point is that they are a ***** to learn but relatively easy to use afterward.)
I think there is a bit of misunderstandings going on between us. Yes, some languages must be compiled before being used as a program. However, the beginner is not
required to do so by hand or through a command prompt. Heck they don't even have to understand what compiling truly means. (That might've taken it too far) If they start off with a IDE similar to visual studio or Eclipse, all they have to worry about is pressing that menu button that says "Build" or "Debug" before their program is useful. IDEs like these are veery user friendly and no longer make compiling code a
labyrinth.
Quote:
Before even programming anything, there exists a much larger number of technical concerns outside of your code itself. You have a new choice of which of up to several dozen compilers / debuggers / IDE's to use with little to no useful information on their strengths and weaknesses, must make sure they are all set up both to your convenience and to actually still work, and must make sense of the compiler itself (which may not actually be a compiler and may have several functions besides that one would also do well to learn.)
Again I respectfully disagree. Beginner's shouldn't get caught up with the pros and cons of a language or compiler. Pick up a book about any language and read it. It might even recommend an IDE or compiler to use. As a total beginner, the pros and cons of a specific language compared to others should be of little concern. Yes some languages are easier to learn than others. Chances are that the beginner did do some kind of research before jumping in. Hopefully, they don't choose a low level language like C or C++. Even if they do, and get overwhelmed, then they can try again and ask for better recommendations. A beginner's toughest obstacle should be to get started, not to compare the intricacies of the tool they're using.
Quote:
In addition, many compiled languages, mostly low-level ones, must be compiled differently and separately for every target platform. More likely you will have to reprogram it for each platform. The higher-level the language, the more cross-compatible it is. Best to ask the beginner to make one program, not three!
Yes, a beginner shouldn't have to redo a program 3 times just so it works on the target platforms....But again, they're
beginners. Using a cross-platforming language should be one of the lowest priorities. They are just starting out and shouldn't be worried about if anyone else can use their (useless) program just yet.
Quote:
Even when you're not screwing up, you're either prowling through the standard library / Internet to find the support for what you want, if indeed it even exists, or trying to program it yourself;
Of course you have to read the documentation, how else are you going use your API to your advantage? This is true of any language. There's no getting around learning an API. This is actually an important skill that everyone should have.
Quote:
Java has been pretty good to me in that I do not have to make those environmental decisions. There's one official JDK with an official compiler and an optional IDE I don't use; for the most part whatever I make in it should run on anything at any time assuming I don't screw it up by my own faults; that's it.
There you go. Assuming you were a beginner, you didn't have to make those decisions as they were of little importance to you...Out of curiosity, if you don't use an IDE, what do you use to program in Java? How do you debug and deal with errors?
Quote:
Quote:
I wouldn't call static typing a concept
I find that bewildering.
dictionary.com wrote:
con·cept [kon-sept] Show IPA
noun
1. a general notion or idea; conception.
Anything that can be fathomed in the human mind, especially where it does not tangibly exist, is a concept - any understanding or perception.
Programming languages rely on these understandings and perceptions taking root in the programmer's mind.
Everything in a programming language is a concept.
Ouch lol.Forgive me but I never formally learned the idea of "static typing". The fact that it even has a name is somewhat new to me. I *always just figured that I just (for the most part) had to declare the type I was using before actually using it.
*That was when I was beginning to learn c#. Even though I never learned what
static typing was, it didn't stop be in the slightest. Really I didn't know what it was by definition until your post. I looked it up on stackoverflow and saw that it meant to simply declare a type before using it. In my mind, that was second nature and if anything did not seem like a programming concept, but more like a syntax rule. (You can argue that syntax is concept, but we have to constrain the word concept somewhere....Everything is a concept if you consider its definition without a constraint.)
Quote:
Quote:
Although you're right about not automatically having these done for you, many people have done so already.
Higher-level programming generally don't rely as heavily on library inclusions as compiled languages because it's easier and faster (note I did not say better) to get things done in it anyway
I would say that beginners should have a good understanding of the use of libraries. They are there to help the programmer, not make it complicated. In my opinion though, a beginner should not start with scripting mostly because it hides too much from them. To be clear, my only experience with the use of scripting languages is in game development. From what I've read, some advantages are to separate the actual core game engine from the "higher level" game code. (Not as in high-level language). It also allows the game to be more data-driven and so to a point more flexible.
Quote:
They can only fully understand a library by opening it up and looking through its code themselves. If they don't want to do that they can check the documentation or experiment with the library to estimate its mechanics. But they can't make heads or tails of any of this if they don't already have some programming background to arm them.
What? Nobody in any position has to look at how something is actually coded in order to understand how to use it. You use java and the official SDK. Did you go through its source code for each and every method you use? I hope not because you don't have to and shouldn't need to. If they are a beginner, they shouldn't be worried about how an image is loaded, only that is has been. I highly doubt they would be able to make heads or tails of
anyone's source code. The majority of the average user's code is not well documented or coded. Their choices are arbitrary with little no clear reason of why they did what they did. I would advise beginners to stay away from or atleast be very careful when reading raw code of another. I would even go as far as to tell them to be careful when following a tutorial. I have read a
lot of tutorials since I've started programming. Although very useful, they sometimes teach bad habits. The beginner would not have enough experience to know that the tutorial is doing something wrong. They take in all the good of it as well as all the bad.
Quote:
By using a scripting language the learning programmer will be eased into programming because they will not immediately require invisible code they can't see and thus can't understand. In C++ for instance you have to include a library just to output something to the user, which is not so with a higher-level language.
Scripting languages are not the only language that is high-level. C# and Java have libraries that must be used to atleast output to the command prompt. Learning to include and use libraries is pretty important. They learn that the API
gives them some additional tools to use for their needs. I dislike how you are always using low-level languages like C++ as reason to only use scripting languages. The vibe I'm getting from you is that the beginner should start with a high-level scripting language. It is of no help to them if a function is available to them and all it supplies them with is a name (and maybe a summary). A function must supply its implementation code in order to be understood. This idea is what I highly disagree with. Java and C# are great languages for a beginner to start off with. They include some of the "complex" things that you argue, but it is not as bad for a beginner as you are portraying them to be.
*I've read over my post a few times. I apologize for any grammar issues you might find.
[quote="Fibriel"]
By understanding the difference between programming languages, the user understands what those differences [i]mean.[/i] Those meanings are global to programming (I should think memorizing the common variable types such as byte int etc. would be pretty important) and are knowledge that will be useful and valuable regardless of the language selected, and as such, ought to be the first things covered.
[/quote]
Sorry for the previous misunderstanding. I do agree that understanding basic variable types like byte, int, etc are important. I thought you were talking about the actual differences between languages.
[quote]
If you select a language that has static typing, you are damn well going to need to know what static typing is, and if you don't - it would be a good idea for you to know ahead of time that your language's dynamic typing is not the case with every language. Bonus if you learn to pretend your language [i]is[/i] statically typed so that you develop the practice of not relying too much on dynamic typing (which where available can still cause ambiguity and major problems.)
[/quote]
I still disagree with this in that beginners shouldn't have to worry about these things. Whether their used language is statically typed and another dynamically typed, it shouldn't matter. You advise beginners to start with a scripting language then to a different language. You haven't provided a good enough reason for this indirection. Your counter arguments include describing the complexities of low-level languages, but you totally forget about other non-scripting high level languages. This is the one of the issues I have with your advice.
[quote]
[quote]I understand what you're saying but it sounds like you're implying that languages that require compilation are hard to work with. [/quote]
That's because they are much like a labyrinth; complicated and full of distracting scenery and potential pitfalls. [i][u]A beginner[/i][/u] doesn't know the way through and will spend ages figuring it out - seasoned programmers have been here many times before, they remember the way, and so can travel through it much faster and better adapt when the ******* dungeon master changes the layout a little bit.
(If that comparison was a little too fanciful I apologize. The point is that they are a ***** to learn but relatively easy to use afterward.)
[/quote]
I think there is a bit of misunderstandings going on between us. Yes, some languages must be compiled before being used as a program. However, the beginner is not [i]required[/i] to do so by hand or through a command prompt. Heck they don't even have to understand what compiling truly means. (That might've taken it too far) If they start off with a IDE similar to visual studio or Eclipse, all they have to worry about is pressing that menu button that says "Build" or "Debug" before their program is useful. IDEs like these are veery user friendly and no longer make compiling code a [i]labyrinth[/i].
[quote]
Before even programming anything, there exists a much larger number of technical concerns outside of your code itself. You have a new choice of which of up to several dozen compilers / debuggers / IDE's to use with little to no useful information on their strengths and weaknesses, must make sure they are all set up both to your convenience and to actually still work, and must make sense of the compiler itself (which may not actually be a compiler and may have several functions besides that one would also do well to learn.)
[/quote]
Again I respectfully disagree. Beginner's shouldn't get caught up with the pros and cons of a language or compiler. Pick up a book about any language and read it. It might even recommend an IDE or compiler to use. As a total beginner, the pros and cons of a specific language compared to others should be of little concern. Yes some languages are easier to learn than others. Chances are that the beginner did do some kind of research before jumping in. Hopefully, they don't choose a low level language like C or C++. Even if they do, and get overwhelmed, then they can try again and ask for better recommendations. A beginner's toughest obstacle should be to get started, not to compare the intricacies of the tool they're using.
[quote]
In addition, many compiled languages, mostly low-level ones, must be compiled differently and separately for every target platform. More likely you will have to reprogram it for each platform. The higher-level the language, the more cross-compatible it is. Best to ask the beginner to make [i]one[/i] program, not three!
[/quote]
Yes, a beginner shouldn't have to redo a program 3 times just so it works on the target platforms....But again, they're [i]beginners[/i]. Using a cross-platforming language should be one of the lowest priorities. They are just starting out and shouldn't be worried about if anyone else can use their (useless) program just yet.
[quote]
Even when you're not screwing up, you're either prowling through the standard library / Internet to find the support for what you want, if indeed it even exists, or trying to program it yourself;
[/quote]
Of course you have to read the documentation, how else are you going use your API to your advantage? This is true of any language. There's no getting around learning an API. This is actually an important skill that everyone should have.
[quote]
Java has been pretty good to me in that I do not have to make those environmental decisions. There's one official JDK with an official compiler and an optional IDE I don't use; for the most part whatever I make in it should run on anything at any time assuming I don't screw it up by my own faults; that's it.
[/quote]
There you go. Assuming you were a beginner, you didn't have to make those decisions as they were of little importance to you...Out of curiosity, if you don't use an IDE, what do you use to program in Java? How do you debug and deal with errors?
[quote]
[quote]I wouldn't call static typing a concept[/quote]
I find that bewildering.
[quote="dictionary.com"]con·cept [kon-sept] Show IPA
noun
1. a general notion or idea; conception.[/quote]
Anything that can be fathomed in the human mind, especially where it does not tangibly exist, is a concept - any understanding or perception.
Programming languages rely on these understandings and perceptions taking root in the programmer's mind. [i]Everything[/i] in a programming language is a concept.
[/quote]
Ouch lol.Forgive me but I never formally learned the idea of "static typing". The fact that it even has a name is somewhat new to me. I *always just figured that I just (for the most part) had to declare the type I was using before actually using it.
*That was when I was beginning to learn c#. Even though I never learned what [i]static typing[/i] was, it didn't stop be in the slightest. Really I didn't know what it was by definition until your post. I looked it up on stackoverflow and saw that it meant to simply declare a type before using it. In my mind, that was second nature and if anything did not seem like a programming concept, but more like a syntax rule. (You can argue that syntax is concept, but we have to constrain the word concept somewhere....Everything is a concept if you consider its definition without a constraint.)
[quote]
[quote]Although you're right about not automatically having these done for you, many people have done so already.[/quote]
Higher-level programming generally don't rely as heavily on library inclusions as compiled languages because it's easier and faster (note I did not say better) to get things done in it anyway[/quote]
I would say that beginners should have a good understanding of the use of libraries. They are there to help the programmer, not make it complicated. In my opinion though, a beginner should not start with scripting mostly because it hides too much from them. To be clear, my only experience with the use of scripting languages is in game development. From what I've read, some advantages are to separate the actual core game engine from the "higher level" game code. (Not as in high-level language). It also allows the game to be more data-driven and so to a point more flexible.
[quote]
They can only fully understand a library by opening it up and looking through its [b]code[/b] themselves. If they don't want to do that they can check the documentation or experiment with the library to estimate its mechanics. But they can't make heads or tails of any of this if they don't already have some programming background to arm them.
[/quote]
What? Nobody in any position has to look at how something is actually coded in order to understand how to use it. You use java and the official SDK. Did you go through its source code for each and every method you use? I hope not because you don't have to and shouldn't need to. If they are a beginner, they shouldn't be worried about how an image is loaded, only that is has been. I highly doubt they would be able to make heads or tails of [i]anyone's[/i] source code. The majority of the average user's code is not well documented or coded. Their choices are arbitrary with little no clear reason of why they did what they did. I would advise beginners to stay away from or atleast be very careful when reading raw code of another. I would even go as far as to tell them to be careful when following a tutorial. I have read a [i]lot[/i] of tutorials since I've started programming. Although very useful, they sometimes teach bad habits. The beginner would not have enough experience to know that the tutorial is doing something wrong. They take in all the good of it as well as all the bad.
[quote]
By using a scripting language the learning programmer will be eased into programming because they will not immediately require invisible code they can't see and thus can't understand. In C++ for instance you have to include a library just to output something to the user, which is not so with a higher-level language.
[/quote]
Scripting languages are not the only language that is high-level. C# and Java have libraries that must be used to atleast output to the command prompt. Learning to include and use libraries is pretty important. They learn that the API [i]gives[/i] them some additional tools to use for their needs. I dislike how you are always using low-level languages like C++ as reason to only use scripting languages. The vibe I'm getting from you is that the beginner should start with a high-level scripting language. It is of no help to them if a function is available to them and all it supplies them with is a name (and maybe a summary). A function must supply its implementation code in order to be understood. This idea is what I highly disagree with. Java and C# are great languages for a beginner to start off with. They include some of the "complex" things that you argue, but it is not as bad for a beginner as you are portraying them to be.
*I've read over my post a few times. I apologize for any grammar issues you might find.