|
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. |
University: Java It's most often used in introductory courses, since it's platform independent and saves the TAs a lot of time. Later on, when the number of students has gone down, you're most often free to chose whatever you like.
You also dont really learn to program in a CS degree. Maybe your first 4 weeks have a bit of programming, later on it will focus on algorithms, data structures and other language independent things. Sure you are required to program stuff, but it's not taught. If your lucky your university offers a 2 week crash courses in various languages prior to semester start, where you can learn to program. Overall you're required to learn that stuff yourself.
|
On September 30 2013 19:47 Birdie wrote:Show nested quote +On September 30 2013 19:40 Ilikestarcraft wrote: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. What did the course cover up to in C?
|
On September 30 2013 19:59 Ilikestarcraft wrote:Show nested quote +On September 30 2013 19:47 Birdie wrote:On September 30 2013 19:40 Ilikestarcraft wrote: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. What did the course cover up to in C? From what I remember, basic algorithms, basic pointers (covered more in depth in 102), input/output (files and consoles for the most part), loops, recursion, functions, structs, types, and more general subjects like bug testing/fixing, a little on program design and logic.
|
Not surprised then that they managed to follow along. How'd did those "imbeciles" do in CS 102 which I'm guessing is like a data structures in C course?
|
On September 30 2013 20:16 Ilikestarcraft wrote: Not surprised then that they managed to follow along. How'd did those "imbeciles" do in CS 102 which I'm guessing is like a data structures in C course? In hindsight imbeciles is perhaps too strong a word. They're not particularly...techy/geeky though, basically ordinary people who had barely touched program settings let alone programmed anything before. They're doing well enough in 102. 102 covers binary/hex, the memory space, how the CPU and registers process data, pointers, compilation, and so on. From what I'm told the second and third years are significantly more difficult than the first year, as the first year is used to get non-programmers up to speed.
What are the CS courses like where you're from?
|
I didn't go to university in Korea so I don't know for sure. From what I do know at least in Hanyang University they take in their 2nd year a data structures in C course where the labs are pretty difficult and time consuming. Its like the weed out course for CS there. Should be pretty similar for other schools too in Korea.
|
On September 30 2013 20:29 Birdie wrote:Show nested quote +On September 30 2013 20:16 Ilikestarcraft wrote: Not surprised then that they managed to follow along. How'd did those "imbeciles" do in CS 102 which I'm guessing is like a data structures in C course? In hindsight imbeciles is perhaps too strong a word. They're not particularly...techy/geeky though, basically ordinary people who had barely touched program settings let alone programmed anything before. They're doing well enough in 102. 102 covers binary/hex, the memory space, how the CPU and registers process data, pointers, compilation, and so on. From what I'm told the second and third years are significantly more difficult than the first year, as the first year is used to get non-programmers up to speed. What are the CS courses like where you're from?
Nearly every four year CS program in the US uses java. If its not java its usually python/.net. I talk with a lot with people who are 5-6 semesters ahead of me and nearly finished; most have never seen hex or pointers and other low level concepts; they also won't stop telling me that everything should be an object. Maybe I'm weird but I kind of wish I could have gone to school back when CS programs had 60% dropout rates and there was more science in computer science. I shouldn't complain; I am at a good school but java just feels so shallow in that you don't really have to dig in much to be a competent java programmer. I think a decent C programmer would run circles around a decent java programmer if he spent a few days learning java; I don't think it would be work out the same the other way around.
|
The idea behind languages like Java is to make them so simple that you don't have to be a very good programmer to write decent code (whether Java succeeds in that aspect is a different story). Of course someone with the experience and knowledge needed to become decent at C would have no big problems with Java. If you're never (or not any time soon) going to get to that "very good" level, C is probably one of the worst languages you could have learnt. It's too fragile for people who don't know exactly what they are doing.
|
On September 30 2013 21:41 spinesheath wrote: The idea behind languages like Java is to make them so simple that you don't have to be a very good programmer to write decent code (whether Java succeeds in that aspect is a different story). Of course someone with the experience and knowledge needed to become decent at C would have no big problems with Java. If you're never (or not any time soon) going to get to that "very good" level, C is probably one of the worst languages you could have learnt. It's too fragile for people who don't know exactly what they are doing.
Unfortunately, some people are too hardcore C fans to acknowledge advantages of Java (or any other HLL really) when it comes to teaching beginners. And yes, I studied C AND Objective-C on top of that in my 2nd year. I still wouldn't recommend C to a beginner. Of course, unless that beginner absolutely doesn't mind more challenges and doing more self-learning than necessary for Java beginners. It's all about how much time you're willing to put outside university.
Edit: But then again, you will still have to learn OOP at one point, be it C++/Java/C#/Objective-C/etc.
Also, someone has said learning OOP leads to learning OOP and Procedural Programming at the same time. True, but it's not a big deal. It's not a reason to switch to Procedural Programming alone.
Edit #2: One more advantage of studying Java is that it has similar to C syntax which helps you to learn C after that.
Edit #3: Bill Gates actually asks for more simplified programming languages:
Not as much as I would like to. I write some C, C# and some Basic. I am surprised new languages have not made more progress in simplifying programming. It would be great if most high school kids were exposed to programming...
Source: http://www.reddit.com/r/IAmA/comments/18bhme/im_bill_gates_cochair_of_the_bill_melinda_gates/c8dcvve
|
On September 30 2013 21:11 Azerbaijan wrote:Show nested quote +On September 30 2013 20:29 Birdie wrote:On September 30 2013 20:16 Ilikestarcraft wrote: Not surprised then that they managed to follow along. How'd did those "imbeciles" do in CS 102 which I'm guessing is like a data structures in C course? In hindsight imbeciles is perhaps too strong a word. They're not particularly...techy/geeky though, basically ordinary people who had barely touched program settings let alone programmed anything before. They're doing well enough in 102. 102 covers binary/hex, the memory space, how the CPU and registers process data, pointers, compilation, and so on. From what I'm told the second and third years are significantly more difficult than the first year, as the first year is used to get non-programmers up to speed. What are the CS courses like where you're from? Nearly every four year CS program in the US uses java. If its not java its usually python/.net. I talk with a lot with people who are 5-6 semesters ahead of me and nearly finished; most have never seen hex or pointers and other low level concepts; they also won't stop telling me that everything should be an object. Maybe I'm weird but I kind of wish I could have gone to school back when CS programs had 60% dropout rates and there was more science in computer science. I shouldn't complain; I am at a good school but java just feels so shallow in that you don't really have to dig in much to be a competent java programmer. I think a decent C programmer would run circles around a decent java programmer if he spent a few days learning java; I don't think it would be work out the same the other way around.
Virtually any CS program worth it's salt should introduce C (if it has not already done so) in its computer systems or architecture course. Understanding the C-level programming model and its implication is one of those things that anyone graduating with a computer science degree should understand.
That being said, there really isn't "C programmers" vs. "Java programmers" as a good programmer should be able to use either language as necessary. Certainly though, there are programmers who understand low-level programming as well as high-level programming and they will (almost) always be better than programmers who are only well-versed in one paradigm.
|
On September 30 2013 21:49 darkness wrote:Show nested quote +On September 30 2013 21:41 spinesheath wrote: The idea behind languages like Java is to make them so simple that you don't have to be a very good programmer to write decent code (whether Java succeeds in that aspect is a different story). Of course someone with the experience and knowledge needed to become decent at C would have no big problems with Java. If you're never (or not any time soon) going to get to that "very good" level, C is probably one of the worst languages you could have learnt. It's too fragile for people who don't know exactly what they are doing. Unfortunately, some people are too hardcore C fans to acknowledge advantages of Java (or any other HLL really) when it comes to teaching beginners. And yes, I studied C AND Objective-C on top of that in my 2nd year. I still wouldn't recommend C to a beginner. Of course, unless that beginner absolutely doesn't mind more challenges and doing more self-learning than necessary for Java beginners. It's all about how much time you're willing to put outside university. Edit: But then again, you will still have to learn OOP at one point, be it C++/Java/C#/Objective-C/etc. Also, someone has said learning OOP leads to learning OOP and Procedural Programming at the same time. True, but it's not a big deal. It's not a reason to switch to Procedural Programming alone. Edit #2: One more advantage of studying Java is that it has similar to C syntax which helps you to learn C after that. Edit #3: Bill Gates actually asks for more simplified programming languages: Show nested quote +Not as much as I would like to. I write some C, C# and some Basic. I am surprised new languages have not made more progress in simplifying programming. It would be great if most high school kids were exposed to programming... Source: http://www.reddit.com/r/IAmA/comments/18bhme/im_bill_gates_cochair_of_the_bill_melinda_gates/c8dcvve
New languages have simplified learning programming significantly, e.g., Scratch or Processing. The problem is that when people say they want a simple programming language for teaching, they typically want:
+ An easy-to-use language, + A language with features conducive to learning modern programming styles, + A language with adequete support libraries to shape a curricula around, and + A language that is relevant in industry/real-life programming.
Lots of factors, both pedagogical and bureaucratic, force these requirements. Unfortunately, no single language out there hits all four points completely (not to mention disagreement as to what "easy-to-use" and "feature conducive to learning modern programming styles" entails). In particular, making a language industry-relevant is not a thing you can "do"; it is a thing that might happen, but you ultimately have little control over it.
|
On September 30 2013 20:39 Ilikestarcraft wrote: I didn't go to university in Korea so I don't know for sure. From what I do know at least in Hanyang University they take in their 2nd year a data structures in C course where the labs are pretty difficult and time consuming. Its like the weed out course for CS there. Should be pretty similar for other schools too in Korea. Oh thanks, that information is neat. Do you know anything about how other major universities like Yonsei University deal with that? (since I'm going to apply soon)
|
There are basically two sides when you want to consider wether to start with C or a more modern memory managed language (Java/C#/...):
The one side wants to learn to program to understand computers. The other side wants to learn to program to do cool stuff with computers.
Neither side is better or worse but each side has different requirements and so should start with different languages. If you just want to do something fun with computers and start with C, you will get bored writing console programs and writing a fancy GUI is a comparatively big hassle, so Java or C# are simply better because they allow you to do something fancy with a little drag and drop. If you want to understand how computers work, Java or C# will obscure a lot of the details and C is the better choice because it doesn't have any "behind the scenes magic" like Java or C# with their garbage collectors and such.
It's simply your approach to programming that should define your first language of choice, not the opinion of others with a different approach.
Personally, i recommend C# to new programmers because the ease of making fun stuff in visual studio keeps them interested while C can get quite tedious at times and can scare people away from programming, but as i said, if people want to learn so they know how computers work, C is definitely the better choice.
|
On October 01 2013 01:23 Morfildur wrote: There are basically two sides when you want to consider wether to start with C or a more modern memory managed language (Java/C#/...):
The one side wants to learn to program to understand computers. The other side wants to learn to program to do cool stuff with computers.
Neither side is better or worse but each side has different requirements and so should start with different languages. If you just want to do something fun with computers and start with C, you will get bored writing console programs and writing a fancy GUI is a comparatively big hassle, so Java or C# are simply better because they allow you to do something fancy with a little drag and drop. If you want to understand how computers work, Java or C# will obscure a lot of the details and C is the better choice because it doesn't have any "behind the scenes magic" like Java or C# with their garbage collectors and such.
It's simply your approach to programming that should define your first language of choice, not the opinion of others with a different approach.
Personally, i recommend C# to new programmers because the ease of making fun stuff in visual studio keeps them interested while C can get quite tedious at times and can scare people away from programming, but as i said, if people want to learn so they know how computers work, C is definitely the better choice. This is my view on it as well. Whether you want to start with C or C#/Java depends completely on what motivation you have to start programming.
And another important aspect: If you have any form of talent at all, going from C#/Java to C is not a big problem. It might definitely be easier to go from C to C#, but the other way around is no big deal. When you actually know the basics of programming, the extra stuff you have to do in C comes quite naturally since you can focus on that. The fact that you rely on a garbage collector in your first forays into programming doesn't mean you will never understand manual memory management.
|
On September 30 2013 21:11 Azerbaijan wrote:Show nested quote +On September 30 2013 20:29 Birdie wrote:On September 30 2013 20:16 Ilikestarcraft wrote: Not surprised then that they managed to follow along. How'd did those "imbeciles" do in CS 102 which I'm guessing is like a data structures in C course? In hindsight imbeciles is perhaps too strong a word. They're not particularly...techy/geeky though, basically ordinary people who had barely touched program settings let alone programmed anything before. They're doing well enough in 102. 102 covers binary/hex, the memory space, how the CPU and registers process data, pointers, compilation, and so on. From what I'm told the second and third years are significantly more difficult than the first year, as the first year is used to get non-programmers up to speed. What are the CS courses like where you're from? Nearly every four year CS program in the US uses java. If its not java its usually python/.net. I talk with a lot with people who are 5-6 semesters ahead of me and nearly finished; most have never seen hex or pointers and other low level concepts; they also won't stop telling me that everything should be an object. Maybe I'm weird but I kind of wish I could have gone to school back when CS programs had 60% dropout rates and there was more science in computer science. I shouldn't complain; I am at a good school but java just feels so shallow in that you don't really have to dig in much to be a competent java programmer. I think a decent C programmer would run circles around a decent java programmer if he spent a few days learning java; I don't think it would be work out the same the other way around.
you have no idea lol.
My uni had 66% drop out rate. The stuff you learn is largely useless in a professional environment. Eg I have loads of programmers around me with cs degrees - we laugh at people who are still using those languages. Their lives must be hellish. We know what we know because we learnt it since leaving uni through constant refinement. What i do have behind me is 3-4 people with maths phd's doing all the cool science stuff. I kinda wish i wasn't sat where i am.
I have also had a minion fresh out of uni. Good guy he did really well when he stopped bitching and really took something on as his own. But what he learnt at uni didn't really help him - maybe learning to learn had helped him. But it was all down to him willing to work outside of work to get skills up to scratch and generally getting that the job is about making the client happy. OFC he didn't have to do it - i even told him to spend hios evenings getting laid / drunk. But hes gonna be really good in a couple of years.
When you compare new school coders with 10 years experience in .net im 33 in that camp - to the old schoolers - (ie guys who are 40) you regularly find the old schoolers just cannot understand oop or have the time or inclination to actually keep up with best practices.
On the other end of the spectrum people coming out of uni have one chance. They need to be motivated as hell to relearn how things work in the real world. IE with deadlines, changing requirements, figuring out hwo to retrofit tests into a monolothic piece of shit.
Decent c programmers dfo not run rings around java / .net programmers ... they operate at completely different scales. When old school c programmers use an oop language they do so in a C kind of way.
Btw i think C is a beautiful language - I use it a lot at home for fun. I would never use it for a professional line of business application. Sure if i had a science component id crack it out but for 99% of my work its irrelevant. Its simply not the right tool.
I think everyone should learn C ... and try to be highly productive with it. I think everyone should learn a properly high language (i prefer .net to java these days as it developed further - scala is cool but i prefer the .net world).
As above the reason to go .net is that you have visual studio. When you hear linux peopel say their os is their development environment it means that their entire system is kind of an organic program ... its very cool, this is why as a .net dev i spend a lot of time at home in linux. Its very different and is much more like the 80/90's i grew up in. Its grass roots procedural coding. I honestly have NO IDEA how these guys wrote such a huge system in C - its a momentous achievement. Working with it is awesome but is like a big rabbit hole. People who say linux is a better development environment have probably never seen visual studio or learnt how to use it. What they clearly have no experience of though is a single tool that has so far ahead of the competition its hilarious when people compare it to eclipse et al. When you install resharper into visual studio and learn how to use it with something like specflow (pickles/cucumber/gherkin for .net world) then you have an envinronment where you can literally go from a specflow feature hitting alt+enter allt he way to skeletal code to stub implementations in seconds. Proper spec driven development / acceptance test driven development and TDD/BDD becomes not only desirable but so ridiculously easy. You will have stubbed out code with failing tests faster than anyone else in any other language which means you spend far far more time actually writing the code rather than the framework to develop it in the future.
TBH if you want to learn something useful you probably want to learn javascript properly. I know i haven't made time yet and regret it.
|
On September 30 2013 21:11 Azerbaijan wrote:Show nested quote +On September 30 2013 20:29 Birdie wrote:On September 30 2013 20:16 Ilikestarcraft wrote: Not surprised then that they managed to follow along. How'd did those "imbeciles" do in CS 102 which I'm guessing is like a data structures in C course? In hindsight imbeciles is perhaps too strong a word. They're not particularly...techy/geeky though, basically ordinary people who had barely touched program settings let alone programmed anything before. They're doing well enough in 102. 102 covers binary/hex, the memory space, how the CPU and registers process data, pointers, compilation, and so on. From what I'm told the second and third years are significantly more difficult than the first year, as the first year is used to get non-programmers up to speed. What are the CS courses like where you're from? Nearly every four year CS program in the US uses java. If its not java its usually python/.net. I talk with a lot with people who are 5-6 semesters ahead of me and nearly finished; most have never seen hex or pointers and other low level concepts; they also won't stop telling me that everything should be an object. Maybe I'm weird but I kind of wish I could have gone to school back when CS programs had 60% dropout rates and there was more science in computer science. I shouldn't complain; I am at a good school but java just feels so shallow in that you don't really have to dig in much to be a competent java programmer. I think a decent C programmer would run circles around a decent java programmer if he spent a few days learning java; I don't think it would be work out the same the other way around. CS is way way way more than simple programming. Broaden your horizons, I did and I'd never do any kind of trivial OO programming ever again. :D
|
On October 01 2013 05:10 Abominous wrote:Show nested quote +On September 30 2013 21:11 Azerbaijan wrote:On September 30 2013 20:29 Birdie wrote:On September 30 2013 20:16 Ilikestarcraft wrote: Not surprised then that they managed to follow along. How'd did those "imbeciles" do in CS 102 which I'm guessing is like a data structures in C course? In hindsight imbeciles is perhaps too strong a word. They're not particularly...techy/geeky though, basically ordinary people who had barely touched program settings let alone programmed anything before. They're doing well enough in 102. 102 covers binary/hex, the memory space, how the CPU and registers process data, pointers, compilation, and so on. From what I'm told the second and third years are significantly more difficult than the first year, as the first year is used to get non-programmers up to speed. What are the CS courses like where you're from? Nearly every four year CS program in the US uses java. If its not java its usually python/.net. I talk with a lot with people who are 5-6 semesters ahead of me and nearly finished; most have never seen hex or pointers and other low level concepts; they also won't stop telling me that everything should be an object. Maybe I'm weird but I kind of wish I could have gone to school back when CS programs had 60% dropout rates and there was more science in computer science. I shouldn't complain; I am at a good school but java just feels so shallow in that you don't really have to dig in much to be a competent java programmer. I think a decent C programmer would run circles around a decent java programmer if he spent a few days learning java; I don't think it would be work out the same the other way around. CS is way way way more than simple programming. Broaden your horizons, I did and I'd never do any kind of trivial OO programming ever again. :D
I don't think he implies Computer Science is just programming. Of course Computer Science is about algorithms, theory, data structures, etc. I think he just says that CS degrees are too focused on programming nowadays.
|
On October 01 2013 07:07 darkness wrote:Show nested quote +On October 01 2013 05:10 Abominous wrote:On September 30 2013 21:11 Azerbaijan wrote:On September 30 2013 20:29 Birdie wrote:On September 30 2013 20:16 Ilikestarcraft wrote: Not surprised then that they managed to follow along. How'd did those "imbeciles" do in CS 102 which I'm guessing is like a data structures in C course? In hindsight imbeciles is perhaps too strong a word. They're not particularly...techy/geeky though, basically ordinary people who had barely touched program settings let alone programmed anything before. They're doing well enough in 102. 102 covers binary/hex, the memory space, how the CPU and registers process data, pointers, compilation, and so on. From what I'm told the second and third years are significantly more difficult than the first year, as the first year is used to get non-programmers up to speed. What are the CS courses like where you're from? Nearly every four year CS program in the US uses java. If its not java its usually python/.net. I talk with a lot with people who are 5-6 semesters ahead of me and nearly finished; most have never seen hex or pointers and other low level concepts; they also won't stop telling me that everything should be an object. Maybe I'm weird but I kind of wish I could have gone to school back when CS programs had 60% dropout rates and there was more science in computer science. I shouldn't complain; I am at a good school but java just feels so shallow in that you don't really have to dig in much to be a competent java programmer. I think a decent C programmer would run circles around a decent java programmer if he spent a few days learning java; I don't think it would be work out the same the other way around. CS is way way way more than simple programming. Broaden your horizons, I did and I'd never do any kind of trivial OO programming ever again. :D I don't think he implies Computer Science is just programming. Of course Computer Science is about algorithms, theory, data structures, etc. I think he just says that CS degrees are too focused on programming nowadays. Nobody stops him from taking interest in artificial intelligence, theoretical computer science, computer security or any other specialisation within CS.
It's just that most programming jobs require CS degrees, so most students go there to grab a degree and find a job so the unis adapted.
Personally, I'm all for a more scientific approach and as someone mentioned earlier writing down those "old" programs in C was a tremendous effort and I'm not a fan of programming nowadays, it has lost its charm, almost everyone can do it with these higher level languages and low understanding of the depth behind it leading to unoptimized applications because of deadlines and a market where a good GUI is more valuable than the product itself. Back in the days, programming had scientific background, now kids fresh out of high school are typing lines of code knowing what it does but not why and how. Face it, programming has become trivial.
EDIT: All of the above is the reason I personally dislike programming nowadays, I'm more of a science nerd as you can see, but to be fair, it's not all bad news with the changes I mentioned above.
|
cross post from HN today that is relevant to the topic of the Big Programming Thread's weekly programming language + Show Spoiler + discussion. http://pastebin.com/ed1pP9Ak
Doesn't really matter what language you start with, or targeting which platforms or structures. Like most things in life, hours put in programming varies directly with the competence and skill of the programmer. What really matters most is learning how to learn. Chances are, if you don't put in the effort required to excel, you'll end up somewhere in software middle-management.
|
On October 01 2013 07:15 Abominous wrote:Back in the days, programming had scientific background, now kids fresh out of high school are typing lines of code knowing what it does but not why and how. Face it, programming has become trivial.
Those two sentences contradict each other. If kids are writing code that they don't understand, then programming is far from trivial. What can be said is that, we're still learning how to effectively teach it when the ground underneath us changes rapidly.
|
|
|
|
|
|