|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
On September 30 2013 06:29 darkness wrote:Show nested quote +On September 30 2013 06:22 3FFA wrote:On September 30 2013 05:59 darkness wrote: Don't start with C just yet, especially if your college/university teaches e.g. Java. You'd find later that Java is easier to grasp. Once you get the basics, your transition to C would be much better than if you started C first because you already have some ground.
To be specific, dynamic memory and pointers may not be an easy concept for your first semester/year.
Interesting since I started with C and transitioned to Objective C in my first year of programming, which was in HS. I'm only now learning Java and so far I think it's only easier because I started with C originally and already understand the basics of Strings, Arrays, different classes, etc. Show nested quote +I started with C originally and already understand the basics of Strings, Arrays, different classes, etc. Why do you put C and classes in the same sentence? It makes no sense to me. I still think starting from a higher level language as someone above said is a much better choice. Basics are easier to grasp in that case, while complex languages like C can make you confused. Yes, you'll still learn to do programming. I'm not denying that, but it may not be the easiest way. Then, if you go to C, you already have enough knowledge to have a good start. Just a slight nitpick even though I know what you meant. C is a simpler language than Java but that is what makes working with it more tedious than Java. To use another example to help explain what I'm saying better, binary is a very simple language. You can learn in it in less than 1 second but its basically impractical trying to get any work done with it.
|
On September 30 2013 06:34 darkness wrote:Show nested quote +On September 30 2013 06:31 3FFA wrote:On September 30 2013 06:29 darkness wrote:On September 30 2013 06:22 3FFA wrote:On September 30 2013 05:59 darkness wrote: Don't start with C just yet, especially if your college/university teaches e.g. Java. You'd find later that Java is easier to grasp. Once you get the basics, your transition to C would be much better than if you started C first because you already have some ground.
To be specific, dynamic memory and pointers may not be an easy concept for your first semester/year.
Interesting since I started with C and transitioned to Objective C in my first year of programming, which was in HS. I'm only now learning Java and so far I think it's only easier because I started with C originally and already understand the basics of Strings, Arrays, different classes, etc. I started with C originally and already understand the basics of Strings, Arrays, different classes, etc. Why do you put C and classes in the same sentence? It makes no sense to me. Umm because I used classes in my programming last year? o.O Either I don't understand you or you imply that studying C helped you understand classes. Well, C isn't OOP. I don't know how it helped you to understand classes but it might be just me. One of the differences between an HLL (Higher Level Language) and a lower level language is that you don't have to do some things on your own. To be specific, you manually deal with dynamic memory in C by using malloc, realloc, free, etc. While in Java, you only have to type: new Object() or new Object[5]. Then you don't even need to use free. The Garbage Collection (GC) does it for you. Edit: So I guess it's fair to say HLL is more abstract to make things simpler. Hence, our recommendation to start with an HLL instead of C or any other lower level language.
You can do OOP in C using ADTs.
On September 30 2013 06:29 darkness wrote:Show nested quote +On September 30 2013 06:22 3FFA wrote:On September 30 2013 05:59 darkness wrote: Don't start with C just yet, especially if your college/university teaches e.g. Java. You'd find later that Java is easier to grasp. Once you get the basics, your transition to C would be much better than if you started C first because you already have some ground.
To be specific, dynamic memory and pointers may not be an easy concept for your first semester/year.
Interesting since I started with C and transitioned to Objective C in my first year of programming, which was in HS. I'm only now learning Java and so far I think it's only easier because I started with C originally and already understand the basics of Strings, Arrays, different classes, etc. Show nested quote +I started with C originally and already understand the basics of Strings, Arrays, different classes, etc. Why do you put C and classes in the same sentence? It makes no sense to me. I still think starting from a higher level language as someone above said is a much better choice. Basics are easier to grasp in that case, while complex languages like C can make you confused. Yes, you'll still learn to do programming. I'm not denying that, but it may not be the easiest way. Then, if you go to C, you already have enough knowledge to have a good start. Show nested quote +On September 30 2013 06:20 Kambing wrote: At this point, you should be taking a step back and review why you need to use generics in the first place. What you are describing does not seem like a case in which generics are appropriate. Well, I just think it's easier to have just 1 method to add a pair of integers/doubles/Strings/etc instead of having method overloading. So what I am talking about is homogenous addition. I'm not trying to add a string and an integer.
Saying Java is easier to start with than C just boggles my mind.
IMO the best way to drive a newbie insane is starting him with Java. How do you tell a student to ignore the terms static, void, methods and classes, and then ask him to debug the application?
Eventually someone is going to ask, what does static void mean? And you'll reply, well that's a whole other kettle of fish and I don't have time to explain OOP right now, just ignore it for now. Even I would have quit programming at that point.
You can also still get memory leaks in Java and ironically I see more leaks in Java apps than C apps. Memory management is still important, but now its even harder to know what's going on because you have never understood the concept of how memory is managed.
At least in C you are starting from scratch and you only type out things you actually understand. When you're a beginner knowing exactly what is going on in your application is more important than elegance and abstraction.
|
Did anyone invest in a pair of good monitors? I think I'm finally at the point where I can justify going out and buying two nice 27" high quality monitors... I can't live like this lol http://i.imgur.com/iytArKe.jpg
|
On September 30 2013 13:34 sluggaslamoo wrote: Saying Java is easier to start with than C just boggles my mind.
IMO the best way to drive a newbie insane is starting him with Java. How do you tell a student to ignore the terms static, void, methods and classes, and then ask him to debug the application?
At least in C you are starting from scratch and you only type out things you actually understand...
The amount of cruft to develop basic programs is one of the biggest legitimate critiques of using Java as a first language. However, Java is still suggested as a first language for a variety of reasons:
(1) People have developed effective curricula that mitigates the "cruft" problem in Java. (2) In the context of university, many departments use Java as their de facto language throughout their courses. (3) Java has a wealth of well documented, cross-platform multimedia support libraries that enable interesting application development, something that C lacks. (4) Java is an object-oriented programming language which is (for better or worse) the gold standard in industry. While C (and any other language) allows you to emulate object-oriented behavior, its primary development paradigm is procedural rather than object-oriented.
C hides less from you which is relevant when learning how computer systems works. However, this is typically not a reasonable learning goal for a student just learning how to program. Put another way, there's typically bigger fish to fry, and Java arguably allows students to do those things better.
In short, there is no language out there that gets the right combination of ease of use, good feature set, support, and relevance to be an ideal first language. Therefore, every language compromises in one way or another.
|
High school senior here. What is the best way to land an internship for someone like me? I've checked such websites as indeed.com, internmatch.com, and simplyhired.com, but almost all posted internships require completion or currently pursuing a BS/MS/Phd. I know some basic java, html, css, and php.
|
On September 30 2013 14:04 Release wrote: High school senior here. What is the best way to land an internship for someone like me? I've checked such websites as indeed.com, internmatch.com, and simplyhired.com, but almost all posted internships require completion or currently pursuing a BS/MS/Phd. I know some basic java, html, css, and php.
Relatively difficult as a high schooler as the standards for internships have increased over the last decade. Most employers will want to see you progressing towards a computer science (or related) degree before they'll look at you. That being said, your best shot at internship-like experience is to look at programs geared specifically for high school folk, e.g., from google and microsoft:
http://www.google.com/edu/programs/index.html#!students http://careers.microsoft.com/careers/en/us/high-school-intern-program.aspx
|
On September 30 2013 13:34 sluggaslamoo wrote: You can do OOP in C using ADTs.
I can also chop a tree using a knife instead of a chainsaw. Implementing OOP behavior in C is a pure science project. Asking a newbie to learn the OOP fundamentals through C is plain stupid and counter-productive.
Saying Java is easier to start with than C just boggles my mind.
IMO the best way to drive a newbie insane is starting him with Java. How do you tell a student to ignore the terms static, void, methods and classes, and then ask him to debug the application?
Eventually someone is going to ask, what does static void mean? And you'll reply, well that's a whole other kettle of fish and I don't have time to explain OOP right now, just ignore it for now. Even I would have quit programming at that point.
I don't even know what you're talking about. No one struggles with the meaning of keywords like static/void/etc in any entry-level java course. It's almost trivial to explain. It's usually not talks of polymorphism that students start getting confused. This is from experience.
You can also still get memory leaks in Java and ironically I see more leaks in Java apps than C apps. Memory management is still important, but now its even harder to know what's going on because you have never understood the concept of how memory is managed.
At least in C you are starting from scratch and you only type out things you actually understand. When you're a beginner knowing exactly what is going on in your application is more important than elegance and abstraction.
The same old tired argument that you're not learning programming unless you're doing explicit memory management, blah blah. Casuals don't take up programming to learn how to manage data explicitly in memory, they do so to build cool programs. It's hardly logical to scare newbies away with unnecessary semantics when don't even know what a loop is. That's not to say that you should never learn how your program works. It all depends on the person's level of interest. If you're really interested in semantics and the science of how things work, naturally you will find your answers. But forcing these details on beginners is the reason why so many people get "scared" by programming. Also, I don't know any seasoned java programmers who doesn't know exactly how their programs are managed internally and they certainly did not start programming with c.
|
On September 30 2013 13:46 Kambing wrote:Show nested quote +On September 30 2013 13:34 sluggaslamoo wrote: Saying Java is easier to start with than C just boggles my mind.
IMO the best way to drive a newbie insane is starting him with Java. How do you tell a student to ignore the terms static, void, methods and classes, and then ask him to debug the application?
At least in C you are starting from scratch and you only type out things you actually understand... The amount of cruft to develop basic programs is one of the biggest legitimate critiques of using Java as a first language. However, Java is still suggested as a first language for a variety of reasons: (1) People have developed effective curricula that mitigates the "cruft" problem in Java. (2) In the context of university, many departments use Java as their de facto language throughout their courses. (3) Java has a wealth of well documented, cross-platform multimedia support libraries that enable interesting application development, something that C lacks. (4) Java is an object-oriented programming language which is (for better or worse) the gold standard in industry. While C (and any other language) allows you to emulate object-oriented behavior, its primary development paradigm is procedural rather than object-oriented. C hides less from you which is relevant when learning how computer systems works. However, this is typically not a reasonable learning goal for a student just learning how to program. Put another way, there's typically bigger fish to fry, and Java arguably allows students to do those things better. In short, there is no language out there that gets the right combination of ease of use, good feature set, support, and relevance to be an ideal first language. Therefore, every language compromises in one way or another.
There's no reason you can't start with C and move onto Java though. The students would probably learn faster, at worst its an extra 6 months, but the students will have a much more thorough grounding in programming.
I know what you're saying, but this stuff is so fundamental that its very easy to know the difference between someone who has started in Java compared to someone who understands Structured Programming, even when they are both programming in Java.
Typically a person who has started in Java will not have good code inside their classes, you may have object orientation, but there is no functional decomposition and you end up with unmaintainable classes, for example massive methods.
You can ignore OO inside a Structured Programming language, but you cannot the other way around. You are still stuck with having to learn Structured Programming in an OO language, which means that you still have to spend time the extra time you would have learning C, but doing it in Java. What's worse is now you are front-loading the learning process, by making the students learn OO at the same time they are learning Structured.
|
On September 30 2013 14:35 sluggaslamoo wrote:Show nested quote +On September 30 2013 13:46 Kambing wrote:On September 30 2013 13:34 sluggaslamoo wrote: Saying Java is easier to start with than C just boggles my mind.
IMO the best way to drive a newbie insane is starting him with Java. How do you tell a student to ignore the terms static, void, methods and classes, and then ask him to debug the application?
At least in C you are starting from scratch and you only type out things you actually understand... The amount of cruft to develop basic programs is one of the biggest legitimate critiques of using Java as a first language. However, Java is still suggested as a first language for a variety of reasons: (1) People have developed effective curricula that mitigates the "cruft" problem in Java. (2) In the context of university, many departments use Java as their de facto language throughout their courses. (3) Java has a wealth of well documented, cross-platform multimedia support libraries that enable interesting application development, something that C lacks. (4) Java is an object-oriented programming language which is (for better or worse) the gold standard in industry. While C (and any other language) allows you to emulate object-oriented behavior, its primary development paradigm is procedural rather than object-oriented. C hides less from you which is relevant when learning how computer systems works. However, this is typically not a reasonable learning goal for a student just learning how to program. Put another way, there's typically bigger fish to fry, and Java arguably allows students to do those things better. In short, there is no language out there that gets the right combination of ease of use, good feature set, support, and relevance to be an ideal first language. Therefore, every language compromises in one way or another. There's no reason you can't start with C and move onto Java though. The students would probably learn faster, at worst its an extra 6 months, but the students will have a much more thorough grounding in programming. I know what you're saying, but this stuff is so fundamental that its very easy to know the difference between someone who has started in Java compared to someone who understands Structured Programming, even when they are both programming in Java. Typically a person who has started in Java will not have good code inside their classes, you may have object orientation, but there is no functional decomposition and you end up with unmaintainable classes, for example massive methods. You can ignore OO inside a Structured Programming language, but you cannot the other way around. You are still stuck with having to learn Structured Programming in an OO language, which means that you still have to spend time the extra time you would have learning C, but doing it in Java. What's worse is now you are front-loading the learning process, by making the students learn OO at the same time they are learning Structured.
There's no reason you can start with x86 and work your way up the chain as well. And it will surely benefit eventual computer scientists that will need to know that stuff anyways. However, it will not be as necessarily immediately satisfying and directly applicable to everyone. These are the sorts of trade offs that you have to make when you choose what language to start with.
I agree with you about your complaints regarding starting with Java first. When I teach intro CS, I use Python for precisely the reasons you described. However, even Python has its own set of problems, in particular, talking about appropriate principles for program design such as abstraction is impossible because Python doesn't provide such facilities. This is what I mean when I say that there's no good, single language for the job. You have to compromise somewhere down the line.
That being said, (to a first degree approximation) it doesn't matter what language you choose as long as you are cognizant of the limitations of your choice and how that shapes the learning goals you want your students to get. Choosing C is fine if you want students to develop a systems-first intuition of programming but you sacrifice ease of use and library support in the process. If your audience is larger (e.g., a service course at a university for both majors and non-majors in CS), you also run the risk of alienating people that want a more directly-applicable language.
|
On September 30 2013 14:34 JoeSchmoe wrote: I don't even know what you're talking about. No one struggles with the meaning of keywords like static/void/etc in any entry-level java course. It's almost trivial to explain. It's usually not talks of polymorphism that students start getting confused. This is from experience.
Actually, this stuff does trip up beginners quite a bit. A reasonable description of static/non-static contexts requires a bit of knowledge that a student simply doesn't have up front. If you elide that discussion until later, then the student feels far less ownership of their code because they don't understand what it is doing.
|
On September 30 2013 14:49 Kambing wrote:Show nested quote +On September 30 2013 14:35 sluggaslamoo wrote:On September 30 2013 13:46 Kambing wrote:On September 30 2013 13:34 sluggaslamoo wrote: Saying Java is easier to start with than C just boggles my mind.
IMO the best way to drive a newbie insane is starting him with Java. How do you tell a student to ignore the terms static, void, methods and classes, and then ask him to debug the application?
At least in C you are starting from scratch and you only type out things you actually understand... The amount of cruft to develop basic programs is one of the biggest legitimate critiques of using Java as a first language. However, Java is still suggested as a first language for a variety of reasons: (1) People have developed effective curricula that mitigates the "cruft" problem in Java. (2) In the context of university, many departments use Java as their de facto language throughout their courses. (3) Java has a wealth of well documented, cross-platform multimedia support libraries that enable interesting application development, something that C lacks. (4) Java is an object-oriented programming language which is (for better or worse) the gold standard in industry. While C (and any other language) allows you to emulate object-oriented behavior, its primary development paradigm is procedural rather than object-oriented. C hides less from you which is relevant when learning how computer systems works. However, this is typically not a reasonable learning goal for a student just learning how to program. Put another way, there's typically bigger fish to fry, and Java arguably allows students to do those things better. In short, there is no language out there that gets the right combination of ease of use, good feature set, support, and relevance to be an ideal first language. Therefore, every language compromises in one way or another. There's no reason you can't start with C and move onto Java though. The students would probably learn faster, at worst its an extra 6 months, but the students will have a much more thorough grounding in programming. I know what you're saying, but this stuff is so fundamental that its very easy to know the difference between someone who has started in Java compared to someone who understands Structured Programming, even when they are both programming in Java. Typically a person who has started in Java will not have good code inside their classes, you may have object orientation, but there is no functional decomposition and you end up with unmaintainable classes, for example massive methods. You can ignore OO inside a Structured Programming language, but you cannot the other way around. You are still stuck with having to learn Structured Programming in an OO language, which means that you still have to spend time the extra time you would have learning C, but doing it in Java. What's worse is now you are front-loading the learning process, by making the students learn OO at the same time they are learning Structured. There's no reason you can start with x86 and work your way up the chain as well. And it will surely benefit eventual computer scientists that will need to know that stuff anyways. However, it will not be as necessarily immediately satisfying and directly applicable to everyone. These are the sorts of trade offs that you have to make when you choose what language to start with. I agree with you about your complaints regarding starting with Java first. When I teach intro CS, I use Python for precisely the reasons you described. However, even Python has its own set of problems, in particular, talking about appropriate principles for program design such as abstraction is impossible because Python doesn't provide such facilities. This is what I mean when I say that there's no good, single language for the job. You have to compromise somewhere down the line. That being said, (to a first degree approximation) it doesn't matter what language you choose as long as you are cognizant of the limitations of your choice and how that shapes the learning goals you want your students to get. Choosing C is fine if you want students to develop a systems-first intuition of programming but you sacrifice ease of use and library support in the process. If your audience is larger (e.g., a service course at a university for both majors and non-majors in CS), you also run the risk of alienating people that want a more directly-applicable language.
Oh lord...
User was warned for this post
|
On September 30 2013 14:34 JoeSchmoe wrote:Show nested quote +On September 30 2013 13:34 sluggaslamoo wrote: You can do OOP in C using ADTs.
I can also chop a tree using a knife instead of a chainsaw. Implementing OOP behavior in C is a pure science project. Asking a newbie to learn the OOP fundamentals through C is plain stupid and counter-productive. Show nested quote + Saying Java is easier to start with than C just boggles my mind.
IMO the best way to drive a newbie insane is starting him with Java. How do you tell a student to ignore the terms static, void, methods and classes, and then ask him to debug the application?
Eventually someone is going to ask, what does static void mean? And you'll reply, well that's a whole other kettle of fish and I don't have time to explain OOP right now, just ignore it for now. Even I would have quit programming at that point.
I don't even know what you're talking about. No one struggles with the meaning of keywords like static/void/etc in any entry-level java course. It's almost trivial to explain. It's usually not talks of polymorphism that students start getting confused. This is from experience. Show nested quote + You can also still get memory leaks in Java and ironically I see more leaks in Java apps than C apps. Memory management is still important, but now its even harder to know what's going on because you have never understood the concept of how memory is managed.
At least in C you are starting from scratch and you only type out things you actually understand. When you're a beginner knowing exactly what is going on in your application is more important than elegance and abstraction.
The same old tired argument that you're not learning programming unless you're doing explicit memory management, blah blah. Casuals don't take up programming to learn how to manage data explicitly in memory, they do so to build cool programs. It's hardly logical to scare newbies away with unnecessary semantics when don't even know what a loop is. That's not to say that you should never learn how your program works. It all depends on the person's level of interest. If you're really interested in semantics and the science of how things work, naturally you will find your answers. But forcing these details on beginners is the reason why so many people get "scared" by programming. Also, I don't know any seasoned java programmers who doesn't know exactly how their programs are managed internally and they certainly did not start programming with c.
Way to take my quote out of context...
In response to...
On September 30 2013 06:34 darkness wrote:
Either I don't understand you or you imply that studying C helped you understand classes. Well, C isn't OOP. I don't know how it helped you to understand classes but it might be just me.
You can do OOP in C, and it was not uncommon to do so, many businesses actually did it believe it or not. Maybe that's why he understood classes, because you can write classes in C????????????????
So no, its not a pure science project...
sigh...
Basic C doesn't scare newbies away at all, if you keep everything in local scope there's no memory management required and its very intuitive.
Compare that to Java where you have to write a whole bunch of boiler plate that you don't understand before you can write a single line of actual code.
This thread gives me such a headache, somehow I keep getting drawn back to it, I don't know why.
|
I've seen relative "imbeciles" be taught C and be relatively competitive in it in 12 weeks at my university, as long as they attended lectures and did the assignments. It's not particularly "difficult", if it's well taught. And the advantage of it is that you're forced to learn much more comprehensively than if you start with a higher level language. Sure, you can do more advanced stuff immediately in Java because of the libraries available, but when people are starting with programs they think it's really cool that you can make a command prompt flash crazy colours, and do matrix style green letters falling down the screen. We were doing that in our free time in the first 3-4 weeks of university, and most of the guys had 0 experience programming, and thought it extremely cool that we could do that. You don't need advanced libraries and GUIs to make people be less scared of programming.
|
On September 30 2013 16:42 sluggaslamoo wrote: You can do OOP in C, and it was not uncommon to do so, many businesses actually did it believe it or not. Maybe that's why he understood classes, because you can write classes in C????????????????
So no, its not a pure science project...
You're overreacting to his comment. He didn't claim it was impossible. It might not be a "science project" and it has been used here and there, but I don't think it's incorrect to say that learning OOP though C is quite a roundabout way of doing it. From a pure learning perspective, it's pretty good since you have to implement everything yourself, but if you want to learn how to program OOP, not how OOP is implemented, it's clearly far faster to learn it in a language like Java or C#.
Implementing OOP in C requires decently deep knowledge of C to begin with.
|
On September 30 2013 17:58 Tobberoth wrote:Show nested quote +On September 30 2013 16:42 sluggaslamoo wrote: You can do OOP in C, and it was not uncommon to do so, many businesses actually did it believe it or not. Maybe that's why he understood classes, because you can write classes in C????????????????
So no, its not a pure science project...
You're overreacting to his comment. He didn't claim it was impossible. It might not be a "science project" and it has been used here and there, but I don't think it's incorrect to say that learning OOP though C is quite a roundabout way of doing it. From a pure learning perspective, it's pretty good since you have to implement everything yourself, but if you want to learn how to program OOP, not how OOP is implemented, it's clearly far faster to learn it in a language like Java or C#. Implementing OOP in C requires decently deep knowledge of C to begin with.
Please read the thread... its the 2nd post on this page...
I never said anybody should learn OOP in C...
|
Honestly don't understand why people even bother to argue over this when its entirely contextual.
If you want to be a great software engineer you should probably learn C at some point, you should probably learn OOP at some point, if you learnt C first probably good to try C++, if you're just starting out learning Java first is hardly going to cripple you.
If you're just wanting to learn something to do some basic data analysis Java or Python are probably best.
Really when you're just starting out C is great but its limited in practicality as most people starting out aren't so bothered about low level applications, if you learn Java first you can do more but you won't understand half of what you're doing (at least not properly).
No good software engineer is limited by the language they use so really whether you're good or bad has little to nothing to do with which language you learnt first and way more to do with the quality of the teaching. If someone taught you Java well and you learned its limitations and uses, you'll be fine, if your job then requires you to go learn C its not a big jump, although honestly the reverse jump might be a little harder, if you never learnt OOP, getting used to all the APIs etc can be annoying.
At least this is what I found as a physics grad who learnt very basic Java at uni for data analysis then got a job writing application software and drivers in C, occasionally dipping into C++.
I'd also say that working on a C codebase teaches you the value of not having a hard-on for OOP. That shit gets so messy when people just make classes for classes sake because OOP. That's very different from learning C though, last I checked learning a language didn't usually involve diving into a massive code base and trying to fix / maintain things.
|
On September 30 2013 13:37 Blisse wrote:Did anyone invest in a pair of good monitors? I think I'm finally at the point where I can justify going out and buying two nice 27" high quality monitors... I can't live like this lol http://i.imgur.com/iytArKe.jpg Why not just get 2 24" 1200p monitors? 27 seems like overkill unless the screen is quite far away..
|
On September 30 2013 05:52 3FFA wrote: [...] Programming in college won't be easy though. You can't miss a single class without being at risk to permanently fall behind due to the fact that every single day will be built off the previous days in the course. If a student misses the first day of programming class they might as well just take the F now and get it over with. That shouldn't be a problem, I missed like a single day of class in 8 years of school and if I missed a single class there's still so many resources online that can help me catching up.
On September 30 2013 05:52 3FFA wrote: [...] I would learn simple things like declaring variables, understanding how to print variables, understanding how arrays work, etc. Learn the basics of Java or C++ and you'll be set. If possible, look at what the online syllabus of your first programming classes says you will be studying and learn a little bit of whatever language it is focusing on. If you don't understand the basics of the language you can ask here and one of us will attempt to explain it to you in a way that makes sense. [...] Uh, it's not about learning how arrays, variables etc. work, I know all that stuff from Pascal. I just need to deepen my knowledge about them and learn to use them in a different language as well as all that language specific stuff (pointers in C++ etc. I believe).
On September 30 2013 13:34 sluggaslamoo wrote: IMO the best way to drive a newbie insane is starting him with Java. How do you tell a student to ignore the terms static, void, methods and classes, and then ask him to debug the application?
Eventually someone is going to ask, what does static void mean? And you'll reply, well that's a whole other kettle of fish and I don't have time to explain OOP right now, just ignore it for now. Even I would have quit programming at that point.
This is exactly what happened me when I tried learning Java a two years ago, so I just told myself to only then continue learning when I either really need it or someone can explain it to me.
On September 30 2013 06:18 Nesserev wrote: First of all, I think it's a better approach to start with a higher object orientated language like python to learn the basics, get used to all the concepts used in programming, and then deepening things out with a lower level language like C++/Java, and maybe afterwards C. I think this approach is much friendlier, more comfortable, than just starting with C++/Java. Plus, you pick up an extra language, that is more approriate for a decent amount of coding jobs compared to C++. [...] I don't know what book to recommend for learning python, maybe "How to think like a computer scientist"... but for learning C++, I would definitely recommend picking up Stephen Prata's "C++ Primer Plus". Thanks for the advice, I really thought about starting with Python maybe since there's also MIT classes (video resources) dealing with it available online for free.
After all I think it's probably not that much about where I start but rather about where I go from there as well as starting at all and getting into it really (opposed to thinking too much about where to start).
|
On September 30 2013 17:47 Birdie wrote: I've seen relative "imbeciles" be taught C and be relatively competitive in it in 12 weeks at my university, as long as they attended lectures and did the assignments. It's not particularly "difficult", if it's well taught. And the advantage of it is that you're forced to learn much more comprehensively than if you start with a higher level language. Sure, you can do more advanced stuff immediately in Java because of the libraries available, but when people are starting with programs they think it's really cool that you can make a command prompt flash crazy colours, and do matrix style green letters falling down the screen. We were doing that in our free time in the first 3-4 weeks of university, and most of the guys had 0 experience programming, and thought it extremely cool that we could do that. You don't need advanced libraries and GUIs to make people be less scared of programming. Was it a 1st course in cs/programming?
|
On September 30 2013 19:40 Ilikestarcraft wrote:Show nested quote +On September 30 2013 17:47 Birdie wrote: I've seen relative "imbeciles" be taught C and be relatively competitive in it in 12 weeks at my university, as long as they attended lectures and did the assignments. It's not particularly "difficult", if it's well taught. And the advantage of it is that you're forced to learn much more comprehensively than if you start with a higher level language. Sure, you can do more advanced stuff immediately in Java because of the libraries available, but when people are starting with programs they think it's really cool that you can make a command prompt flash crazy colours, and do matrix style green letters falling down the screen. We were doing that in our free time in the first 3-4 weeks of university, and most of the guys had 0 experience programming, and thought it extremely cool that we could do that. You don't need advanced libraries and GUIs to make people be less scared of programming. Was it a 1st course in cs/programming? Yeah, Introduction to Computer Programming 101. For me I'd done a bit of self-learning so it was really easy but for the others most had never done any programming, but they picked it up pretty fast.
|
|
|
|
|
|