Stanford does very well at explaining it, watch two videos and tell me im wrong, some courses are definitely too vague but they are not one of those... and i think you are right, but i havent used VisualStudio in 8 years, since before it was technically even VisualStudio's, so im not too familiar with what its all about these days, i just know a few people that use D3D throught .NET to make games.
Stanford does very well at explaining it, watch two videos and tell me im wrong, some courses are definitely too vague but they are not one of those... and i think you are right, but i havent used VisualStudio in 8 years, since before it was technically even VisualStudio's, so im not too familiar with what its all about these days, i just know a few people that use D3D throught .NET to make games.
ANY academic, Computer Science course is going to necessarily cover the science, rather than the application- thus my analogy. That doesn't make it useless, it just makes it largely separate. For example me and my co-workers can wax on for hours about things like schema design (covered in DB courses) or performance (Big O notation, Data structures) but the fact is always that in terms of application it is not a case of designing the fastest possible program- it is designing the fastest possible program that meets the needs of the customer for the lowest labour cost, if that makes sense. the CS fundamentals can help us make that decision, but learning how to estimate labour costs and weigh the different options for a particular enhancement are not something you are taught anywhere until you are actually working in the industry.
Also, regarding Visual Studio... 8 years ago the current Version was "Visual Studio 2005" and it was most definitely called Visual Studio. It has been called Visual Studio since 2002; (before that, it was a suite, but VB and FoxPro weren't dealt with by it- VB6/VB5 and FoxPro were both separate programs. With VS 2002 it used a single Environment, an evolution of their Developer Studio which had previously been used for C++ and J++. I suppose you must mean 12 years- but before that it was pretty much the VC++ environment too.
Knowing people that use D3D to make games doesn't necessarily mean that is a good way forward. I'm usually a bit of a MS-leaning fellow but Direct3D and DirectX are absolutely horrible in terms of their API support, and it doesn't help that it uses COM, which is pretty awful. I suspect the only reason it's lasted this long is because they force it to be used with their XBox consoles. (which is interesting since that is pretty much what XBox was designed for- DirectXBox was the original proposed name).
oh holy wow... 2007 was almost 8 years ago... man where has time gone... yea no it was like 2000-2001 then, as i was still in school, starting freshman year i think... thanks for making me feel older than i already did -.- and yea it makes sense when you think of labor cost's, but we are talking about an 11 year old who knows nothing about coding... you may disagree but i feel its better for him to learn what code means before learning what words to use to make it do things... it may be a bit harder, but its like learning any language, if you try to memorize words and translation's you will always rely on that, if you instead learn native grammar and usage first, you can pick the rest up simple enough no matter what language it is, thats why they say its best to start so young in a second language, because you are still learning the grammar and usage, as well as some words but not like you do later in life...
now i have to ask, as i do not recall seeing it yet... what is your opinion on where he should start, and why?
and all i ever used from what is now VisualStudio's was Basic/VB and C++, and we used a different IDE for C++ i think(~2002 and my memory sucks)... i hated everything about it even back then... i did like BASIC, but it was because it was easy for me to grasp, for some reason it just made sense to me, and despite my teacher telling me C++ was more flexible and powerful i wrote all my work in both languages and showed him otherwise... (it actually was, but to this day i refuse to acknowledge that)
lol no they're not. You can use any other IDE than Visual Studio, you could use OpenGL rather than DirectX (or you could use a higher level library that wraps either of these, e.g. SFML, SDL, etc.), and you certainly don't need to program in a .NET language. I'm amazed, even for a kid, that you don't know any of this. This is really, really basic stuff. Learn what a programming language is, what an IDE is, and what a library is (specifically, what OpenGL and DirectX are), come back, and we can talk. But until you at least get down the fundamentals, you're wasting your time trying to talk about programming because it's simply a subject you don't know anything about yet.
Yes, you are right, but I wouldn't be advertising the fact that you are a kid at this point. I will invest no more in this argument, so please do not feel led to reply.
Java was a great, easy starter for me! There are thousands of free tutorials on it out there, and it is fairly easy.
It's definitely possible at that age, I was programming to a basic level when I was 10.
Java is your best option, as it is widely popular and much easier than C. Search for "TheNewBoston" on youtube, he has lots of good Java tutorials. I can quote how I got into java here:
"In summary, I got into Java with Minecraft. I got bored of the game after a year, and decided to start making mods. Me and my dad worked together on a basic mod that added a few blocks and items. Eventually, our schedules didn't line up enough, so I started my own mods. I wanted to put my experience into a more practical situation, and thus came real Java. TheNewBoston's youtube tutorials helped me a lot to fill in the blanks that I didn't understand. Eventually came Pink Box, my first real program."
Some of my friends can code batch and vbs, which may be good starting points to get the idea.
Yes, you are right, but I wouldn't be advertising the fact that you are a kid at this point. I will invest no more in this argument, so please do not feel led to reply.
Java was a great, easy starter for me! There are thousands of free tutorials on it out there, and it is fairly easy.
.NET Language: A language utilizing the .NET framework.
Library: A set of files that programmers use as a base to build their program on. Examples are DirectX, DINO, OpenGL, etc:
IDE: It's also called a compiler... It's what programmers use to build their program upon.
IDE: Integrated Development Environment. Your definition was pretty awful and completely wrong. IDE's provide tools to work with language(s) such as auto completion, debuggers, in-line checking, etc. They also often include compilers. Compilers are just a program that takes human written code and creates machine code based off that. javac.exe for example, let's you compile .java files into .class files which are then interpreted by the JVM.
Not to mention your Library definition is kinda basic, and doesn't take into account the existence of APIs. Your .NET language definition is also somewhat basic and circular in nature.
IDE: Integrated Development Environment. Your definition was pretty awful and completely wrong. IDE's provide tools to work with language(s) such as auto completion, debuggers, in-line checking, etc. They also often include compilers. Compilers are just a program that takes human written code and creates machine code based off that. javac.exe for example, let's you compile .java files into .class files which are then interpreted by the JVM.
Not to mention your Library definition is kinda basic, and doesn't take into account the existence of APIs. Your .NET language definition is also somewhat basic and circular in nature.
javac.exe doesn't count as a compiler by the definition you just gave, since it compiles to Java bytecode rather than actual machine code. ".NET language" and ".NET framework" are two different things, so I'm not sure how his definition would be circular. But other than that, you make a good point.
I've always found Java bytecode and legitimate machine code synonymous for all intents and purposes. Maybe not by definition. It's still the compiled code that the machine uses to execute the user defined code.
I've always found Java bytecode and legitimate machine code synonymous for all intents and purposes. Maybe not by definition. It's still the compiled code that the machine uses to execute the user defined code.
Bytecode is not machine code. Even though a "Virtual Machine" runs it- for the same reason that Python is not machine code because a virtual machine runs it. "Virtual Machine" is just a fancy way to say "Optimized Interpreter".
Then you clearly haven't gotten into OOP within PHP. Do note, I write about 17 languages. I just listed a few.
OO constructs in PHP are perhaps the worst designed parts of the language- because they weren't designed at all. Just stapled on top, like everything else added. The way OO is designed, it hardly promotes OO design and doesn't even promote Object-based design, because the standard API is procedural. It's only strength really is that it has somehow managed to become the go-to language that is provided on LAMP-based web hosts- It's OO capabilities are hardly a strength, because they are included- not integrated. The primary issue is that PHP was never designed -it was evolved. That's why it doesn't allow for multi-threading, (and by extension it isn't thread-safe). it doesn't support character sets, explicit casts cannot circumvent implicit type coercion, etc. In terms of the language, it's absolutely horrible- in terms of the API, it's absolutely horrible. It's biggest advantage is simply that it is so widely deployed one would be a food not to become familiar with it (Either that or cover one's ears and staple their chicken to JSP or Mono/Apache/IIS.).
One big issue, and that is prevalent and even encouraged by the Docs, is "Data sanitation". That is, sanitizing anything coming via User Input- to prevent SQL injection attacks. That is... just misguided. One should be using proper SQL parameters. It is a shame the documentation has so many examples of poor code, simply because those poor examples are self-replicating. Many of them contain bugs (because they are examples) and you find those segments copy pasted all over the web. This is less a problem with the language and more one with it's representation.
Nothing more better illustrates this than some history about certain fixes to the language, which are described here. That is not software design. That is not bug fixing. That is writing garbage code hoping the problem goes away. So it seems part of he problem is that they have no auditing about who is actually contributing to it, assuming these are not added by people in the employ of Zend. It is unfortunate because at this point there are so many scripts written that depend on the extraneous garbage and bugs that PHP6 hasn't a hope of being particularly popular if it is going to actually fix them- and if it does fix them, we'll just have the same stupid mock petitions and outrage that we saw with Visual Basic 6 finally being dropped.
It's not the job of the documentation to show you how to sanitize your code in basic examples. If you look into PDO — it will sometimes show you that you need to use prepared statements. If, however, you look into mysql_*, you'll get at most mysql_real_escape_string().
Yes it is. The documentation should encourage good practices, not poor ones. With the exception of things like the prepare statement, none of the examples tend to use prepared statements and parameters.
[quote]If someone wants to copy a piece of code from documentation without editing it, they're not very smart when it comes to programming.
Aside from Copy paste being a de-facto standard when it comes to a lot of PHP development since it is largely the domain of amateurs, there is also the problem that example code should be an example of reasonably good code- something that can be used to model one's own code using teh documented feature. In PHP's case it is typically just a slapped together example that forgoes any good practice in the interest of stapling the documented function or capability into the example. Thankfully, people who actually know what they are doing eventually speak up in the comments (User contributed notes)
[quote]And the constructors are simply PHP's "magic functions". They are not related to OOP in a few ways. They are just event functions more or less. I never mentioned constructors. I certainly never mentioned __construct(). I said PHP was awful (in different words) and you said that was effectively because I've not dealt with OOP... which I have, which was also awful... so you point out how PHP's OO implementation is awful yourself by explaining how it uses magic methods that aren't related to OO at all to implement OO.
[quote]Basically, whether you love or hate PHP, people are going to use it. Facebook, Google, Amazon — everyone (yes, I know they use others too). PHP is like any other language, it has its bad parts — but it has its good parts too. PHP has no good qualities. I'd almost say it's ubiquity across LAMP servers was a advantage, but then I think about how a terrible programming language becoming ubiquitous is not a net positive. The fact that great software can be written in a terrible language does not lend creedence to the applicability of the language as much as it is an indicator of the pluckiness of those writing the software to be able to create good software in spite of their choice of tooling.
>If you really dislike certain things about PHP, go on GitHub and fix them... since you're a master programmer with OO-styled things.
"Fix it yourself" is a cop out excuse for bad software. Software being open source is not an excuse for software being garbage, and people pointing out that a piece of software is garbage are not obligated to be the person to fix that garbage- they are going to move on and use something that isn't garbage. Yes, sure, I COULD fix PHP's problems. I could spend some nights of my own spare time working on a patch for a change to fix one of the many copious, idiotic, and broken features of PHP. But I don't see the point considering such a patch would get rejected because the maintainer cannot be assed to perform a proper merge or because it "breaks coding conventions". People who use the "If you don't like it, fork it" excuse are either being purposely disingenous or are missing the point.
I don't WANT to fork a crappy piece of Open source code, learn how it works, and then make a change because the people responsible can't be bothered to do so in the afternoon when they come home from secondary school. I don't want to then deal with the sort of braindead contributors that think testing if a Int is larger than MAX_VALUE is going to prevent integer overflow, who would them be responsible for maintaining that code I added- either that, or I then periodically have to take time out of my life to diff and merge changes to the original project related to that change.
If a Program/package is made available on the Internet and made Open Source, it's because you expect people to use it. If you expect people to use it, you better be prepared to accept criticism and suggestions. And if you want people to continue to use it, than you better do something about that criticism that you get. No I will not "fix it myself". It's not my job to fix the broken code of idiots just because I happen to occasionally use it and run up against their poor design decisions or hilarious attempts at fixing relatively trivial errors.
My solution to PHP is that I do not use if it can be at all avoided. And despite it's ubiquity, it is becoming easier and easier to make better choices. Anachronistic languages that lack lambdas and method chaining and require frameworks to keep up with modern design techniques do not belong in the internet ecosystem of 2014.
ANY academic, Computer Science course is going to necessarily cover the science, rather than the application- thus my analogy. That doesn't make it useless, it just makes it largely separate. For example me and my co-workers can wax on for hours about things like schema design (covered in DB courses) or performance (Big O notation, Data structures) but the fact is always that in terms of application it is not a case of designing the fastest possible program- it is designing the fastest possible program that meets the needs of the customer for the lowest labour cost, if that makes sense. the CS fundamentals can help us make that decision, but learning how to estimate labour costs and weigh the different options for a particular enhancement are not something you are taught anywhere until you are actually working in the industry.
Also, regarding Visual Studio... 8 years ago the current Version was "Visual Studio 2005" and it was most definitely called Visual Studio. It has been called Visual Studio since 2002; (before that, it was a suite, but VB and FoxPro weren't dealt with by it- VB6/VB5 and FoxPro were both separate programs. With VS 2002 it used a single Environment, an evolution of their Developer Studio which had previously been used for C++ and J++. I suppose you must mean 12 years- but before that it was pretty much the VC++ environment too.
Knowing people that use D3D to make games doesn't necessarily mean that is a good way forward. I'm usually a bit of a MS-leaning fellow but Direct3D and DirectX are absolutely horrible in terms of their API support, and it doesn't help that it uses COM, which is pretty awful. I suspect the only reason it's lasted this long is because they force it to be used with their XBox consoles. (which is interesting since that is pretty much what XBox was designed for- DirectXBox was the original proposed name).
now i have to ask, as i do not recall seeing it yet... what is your opinion on where he should start, and why?
and all i ever used from what is now VisualStudio's was Basic/VB and C++, and we used a different IDE for C++ i think(~2002 and my memory sucks)... i hated everything about it even back then... i did like BASIC, but it was because it was easy for me to grasp, for some reason it just made sense to me, and despite my teacher telling me C++ was more flexible and powerful i wrote all my work in both languages and showed him otherwise... (it actually was, but to this day i refuse to acknowledge that)
Yes, you are right, but I wouldn't be advertising the fact that you are a kid at this point. I will invest no more in this argument, so please do not feel led to reply.
Java was a great, easy starter for me! There are thousands of free tutorials on it out there, and it is fairly easy.
Java is your best option, as it is widely popular and much easier than C. Search for "TheNewBoston" on youtube, he has lots of good Java tutorials. I can quote how I got into java here:
"In summary, I got into Java with Minecraft. I got bored of the game after a year, and decided to start making mods. Me and my dad worked together on a basic mod that added a few blocks and items. Eventually, our schedules didn't line up enough, so I started my own mods. I wanted to put my experience into a more practical situation, and thus came real Java. TheNewBoston's youtube tutorials helped me a lot to fill in the blanks that I didn't understand. Eventually came Pink Box, my first real program."
Some of my friends can code batch and vbs, which may be good starting points to get the idea.
Let's do some math.
1/3 = 0.333...
1/3 * 3 = 1
0.333... * 3 = 0.999...
1 = 0.999...
1 - 0.999... = 0.999... - 0.999...
0.0...1 = 0
0.0...1 * 10... = 0 * 10...
1 = 0
.NET Language: A language utilizing the .NET framework.
Library: A set of files that programmers use as a base to build their program on. Examples are DirectX, DINO, OpenGL, etc:
IDE: It's also called a compiler... It's what programmers use to build their program upon.
I'm back
Not to mention your Library definition is kinda basic, and doesn't take into account the existence of APIs. Your .NET language definition is also somewhat basic and circular in nature.
"Programmers never repeat themselves. They loop."
Your reading comprehension could use some work.
javac.exe doesn't count as a compiler by the definition you just gave, since it compiles to Java bytecode rather than actual machine code. ".NET language" and ".NET framework" are two different things, so I'm not sure how his definition would be circular. But other than that, you make a good point.
"Programmers never repeat themselves. They loop."
Bytecode is not machine code. Even though a "Virtual Machine" runs it- for the same reason that Python is not machine code because a virtual machine runs it. "Virtual Machine" is just a fancy way to say "Optimized Interpreter".
"Programmers never repeat themselves. They loop."
But if you like PHP something has gone horribly wrong...
OO constructs in PHP are perhaps the worst designed parts of the language- because they weren't designed at all. Just stapled on top, like everything else added. The way OO is designed, it hardly promotes OO design and doesn't even promote Object-based design, because the standard API is procedural. It's only strength really is that it has somehow managed to become the go-to language that is provided on LAMP-based web hosts- It's OO capabilities are hardly a strength, because they are included- not integrated. The primary issue is that PHP was never designed -it was evolved. That's why it doesn't allow for multi-threading, (and by extension it isn't thread-safe). it doesn't support character sets, explicit casts cannot circumvent implicit type coercion, etc. In terms of the language, it's absolutely horrible- in terms of the API, it's absolutely horrible. It's biggest advantage is simply that it is so widely deployed one would be a food not to become familiar with it (Either that or cover one's ears and staple their chicken to JSP or Mono/Apache/IIS.).
One big issue, and that is prevalent and even encouraged by the Docs, is "Data sanitation". That is, sanitizing anything coming via User Input- to prevent SQL injection attacks. That is... just misguided. One should be using proper SQL parameters. It is a shame the documentation has so many examples of poor code, simply because those poor examples are self-replicating. Many of them contain bugs (because they are examples) and you find those segments copy pasted all over the web. This is less a problem with the language and more one with it's representation.
Nothing more better illustrates this than some history about certain fixes to the language, which are described here. That is not software design. That is not bug fixing. That is writing garbage code hoping the problem goes away. So it seems part of he problem is that they have no auditing about who is actually contributing to it, assuming these are not added by people in the employ of Zend. It is unfortunate because at this point there are so many scripts written that depend on the extraneous garbage and bugs that PHP6 hasn't a hope of being particularly popular if it is going to actually fix them- and if it does fix them, we'll just have the same stupid mock petitions and outrage that we saw with Visual Basic 6 finally being dropped.
Yes it is. The documentation should encourage good practices, not poor ones. With the exception of things like the prepare statement, none of the examples tend to use prepared statements and parameters.
[quote]If someone wants to copy a piece of code from documentation without editing it, they're not very smart when it comes to programming.
Aside from Copy paste being a de-facto standard when it comes to a lot of PHP development since it is largely the domain of amateurs, there is also the problem that example code should be an example of reasonably good code- something that can be used to model one's own code using teh documented feature. In PHP's case it is typically just a slapped together example that forgoes any good practice in the interest of stapling the documented function or capability into the example. Thankfully, people who actually know what they are doing eventually speak up in the comments (User contributed notes)
[quote]And the constructors are simply PHP's "magic functions". They are not related to OOP in a few ways. They are just event functions more or less. I never mentioned constructors. I certainly never mentioned __construct(). I said PHP was awful (in different words) and you said that was effectively because I've not dealt with OOP... which I have, which was also awful... so you point out how PHP's OO implementation is awful yourself by explaining how it uses magic methods that aren't related to OO at all to implement OO.
[quote]Basically, whether you love or hate PHP, people are going to use it. Facebook, Google, Amazon — everyone (yes, I know they use others too). PHP is like any other language, it has its bad parts — but it has its good parts too. PHP has no good qualities. I'd almost say it's ubiquity across LAMP servers was a advantage, but then I think about how a terrible programming language becoming ubiquitous is not a net positive. The fact that great software can be written in a terrible language does not lend creedence to the applicability of the language as much as it is an indicator of the pluckiness of those writing the software to be able to create good software in spite of their choice of tooling.
>If you really dislike certain things about PHP, go on GitHub and fix them... since you're a master programmer with OO-styled things.
"Fix it yourself" is a cop out excuse for bad software. Software being open source is not an excuse for software being garbage, and people pointing out that a piece of software is garbage are not obligated to be the person to fix that garbage- they are going to move on and use something that isn't garbage. Yes, sure, I COULD fix PHP's problems. I could spend some nights of my own spare time working on a patch for a change to fix one of the many copious, idiotic, and broken features of PHP. But I don't see the point considering such a patch would get rejected because the maintainer cannot be assed to perform a proper merge or because it "breaks coding conventions". People who use the "If you don't like it, fork it" excuse are either being purposely disingenous or are missing the point.
I don't WANT to fork a crappy piece of Open source code, learn how it works, and then make a change because the people responsible can't be bothered to do so in the afternoon when they come home from secondary school. I don't want to then deal with the sort of braindead contributors that think testing if a Int is larger than MAX_VALUE is going to prevent integer overflow, who would them be responsible for maintaining that code I added- either that, or I then periodically have to take time out of my life to diff and merge changes to the original project related to that change.
If a Program/package is made available on the Internet and made Open Source, it's because you expect people to use it. If you expect people to use it, you better be prepared to accept criticism and suggestions. And if you want people to continue to use it, than you better do something about that criticism that you get. No I will not "fix it myself". It's not my job to fix the broken code of idiots just because I happen to occasionally use it and run up against their poor design decisions or hilarious attempts at fixing relatively trivial errors.
My solution to PHP is that I do not use if it can be at all avoided. And despite it's ubiquity, it is becoming easier and easier to make better choices. Anachronistic languages that lack lambdas and method chaining and require frameworks to keep up with modern design techniques do not belong in the internet ecosystem of 2014.