• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 03:34
CEST 09:34
KST 16:34
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Serral wins Maestros of the Game 237ByuL, and the Limitations of Standard Play3Team Liquid Map Contest #22: Results and Winners7Code S Season 2 (2026): RO4 and Finals Preview12TL.net Map Contest #22 - Voting & Ladder Map Selection7
Community News
BSL Season 22 Full Overview & Conclusion5BSL Season 22 Full Overview & Conclusion5Weekly Cups (June 29-July 5): Solar Doubles0MC vs IdrA, Boxer vs Nal_rA to be Legacy Matches @ BlizzCon445.0.16 Hotfix (June 30) - Balance + Bug Fixes40
StarCraft 2
General
Serral wins Maestros of the Game 2 Most successful SC2 players of Q2 2026 MC vs IdrA, Boxer vs Nal_rA to be Legacy Matches @ BlizzCon Is the larve respawn broken? 5.0.16 patch for SC2 goes live (8 worker start)
Tourneys
RSL Revival: Season 6 - Qualifiers and Main Event GSL CK #5 Race War HomeStory Cup 29 Vespene Cup #1 — $300+ USD, July 10 Sea Duckling Open (Global, Bronze-Diamond)
Strategy
[G] Having the right mentality to improve
Custom Maps
New Map Maker - Looking for Advice - Love or Hate Work In Progress Melee Maps [D]RTS in all its shapes and glory <3
External Content
Mutation # 533 Die Together The PondCast: SC2 News & Results Mutation # 532 Nuclear Family Mutation # 531 Experimental Artillery
Brood War
General
ASL22 General Discussion BW General Discussion BGH Auto Balance -> http://bghmmr.eu/ BSL Season 22 Full Overview & Conclusion ASL 22 Proposed Map Pool
Tourneys
[ASL22] Wildcard Qualifier [Megathread] Daily Proleagues IPSL Spring 2026 Top 4! CSLAN 4 is Coming!
Strategy
Fighting Spirit mining rates Simple Questions, Simple Answers Creating a full chart of Zerg builds Relatively freeroll strategies
Other Games
General Games
Summer Games Done Quick 2026! General RTS Discussion Thread Nintendo Switch Thread Stormgate/Frost Giant Megathread Dawn of War IV
Dota 2
Looking for a Dota Mentor Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
NeO.D_StephenKing vs This Guy From 1 Million Dance TL Mafia Community Thread TL Mafia Power Rank Vanilla Mini Mafia
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread UK Politics Mega-thread YouTube Thread Canadian Politics Mega-thread
Fan Clubs
The IdrA Fan Club The HerO Fan Club!
Media & Entertainment
Anime Discussion Thread Movie Discussion! Series you have seen recently...
Sports
2024 - 2026 Football Thread McBoner: A hockey love story Tennis[sport] Formula 1 Discussion TeamLiquid Health and Fitness Initiative For 2023
World Cup 2022
Tech Support
FPS when play League Of Legend on laptop How to clean a TTe Thermaltake keyboard? Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List
Blogs
Major Shifts in the Gaming I…
TrAiDoS
An Exploration of th…
waywardstrategy
Gauntlet SC2: A Retrospectiv…
Ctone23
ramps on octagon
StaticNine
Funny Nicknames
LUCKY_NOOB
Evil Gacha Games and the…
ffswowsucks
Customize Sidebar...

Website Feedback

Closed Threads



Active: 5120 users

The Big Programming Thread - Page 361

Forum Index > General Forum
Post a Reply
Prev 1 359 360 361 362 363 1032 Next
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.
Ilikestarcraft
Profile Blog Joined November 2004
Korea (South)17743 Posts
Last Edited: 2013-09-30 03:01:53
September 29 2013 22:42 GMT
#7201
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.
ils
"Nana is a goddess. Or at very least, Nana is my goddess." - KazeHydra
sluggaslamoo
Profile Blog Joined November 2009
Australia4494 Posts
Last Edited: 2013-09-30 04:38:58
September 30 2013 04:34 GMT
#7202
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.
Come play Android Netrunner - http://www.teamliquid.net/forum/viewmessage.php?topic_id=409008
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
September 30 2013 04:37 GMT
#7203
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
There is no one like you in the universe.
Kambing
Profile Joined May 2010
United States1176 Posts
September 30 2013 04:46 GMT
#7204
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.
Release
Profile Blog Joined October 2010
United States4397 Posts
September 30 2013 05:04 GMT
#7205
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.
☺
Kambing
Profile Joined May 2010
United States1176 Posts
Last Edited: 2013-09-30 05:09:27
September 30 2013 05:08 GMT
#7206
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
JoeSchmoe
Profile Joined May 2010
Canada2058 Posts
September 30 2013 05:34 GMT
#7207
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.
sluggaslamoo
Profile Blog Joined November 2009
Australia4494 Posts
September 30 2013 05:35 GMT
#7208
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.
Come play Android Netrunner - http://www.teamliquid.net/forum/viewmessage.php?topic_id=409008
Kambing
Profile Joined May 2010
United States1176 Posts
September 30 2013 05:49 GMT
#7209
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.
Kambing
Profile Joined May 2010
United States1176 Posts
September 30 2013 05:53 GMT
#7210
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.
sluggaslamoo
Profile Blog Joined November 2009
Australia4494 Posts
September 30 2013 07:31 GMT
#7211
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
Come play Android Netrunner - http://www.teamliquid.net/forum/viewmessage.php?topic_id=409008
sluggaslamoo
Profile Blog Joined November 2009
Australia4494 Posts
Last Edited: 2013-09-30 07:45:23
September 30 2013 07:42 GMT
#7212
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.
Come play Android Netrunner - http://www.teamliquid.net/forum/viewmessage.php?topic_id=409008
Birdie
Profile Blog Joined August 2007
New Zealand4438 Posts
September 30 2013 08:47 GMT
#7213
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.
Red classic | A butterfly dreamed he was Zhuangzi | 4.5k, heading to 5k as support!
Tobberoth
Profile Joined August 2010
Sweden6375 Posts
September 30 2013 08:58 GMT
#7214
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.
sluggaslamoo
Profile Blog Joined November 2009
Australia4494 Posts
September 30 2013 09:09 GMT
#7215
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...
Come play Android Netrunner - http://www.teamliquid.net/forum/viewmessage.php?topic_id=409008
adwodon
Profile Blog Joined September 2010
United Kingdom592 Posts
September 30 2013 09:28 GMT
#7216
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.
CorsairHero
Profile Joined December 2008
Canada9491 Posts
September 30 2013 09:30 GMT
#7217
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..
© Current year.
Soohyung
Profile Joined April 2012
Korea (South)116 Posts
September 30 2013 10:04 GMT
#7218
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).
이지은
Ilikestarcraft
Profile Blog Joined November 2004
Korea (South)17743 Posts
September 30 2013 10:40 GMT
#7219
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?
ils
"Nana is a goddess. Or at very least, Nana is my goddess." - KazeHydra
Birdie
Profile Blog Joined August 2007
New Zealand4438 Posts
September 30 2013 10:47 GMT
#7220
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.
Red classic | A butterfly dreamed he was Zhuangzi | 4.5k, heading to 5k as support!
Prev 1 359 360 361 362 363 1032 Next
Please log in or register to reply.
Live Events Refresh
Next event in 1h 26m
[ Submit Event ]
Live Streams
Refresh
StarCraft: Brood War
Mong 178
Leta 142
Pusan 109
Mind 49
HiyA 38
JulyZerg 36
Aegong 35
NaDa 34
Soma 18
sSak 16
[ Show more ]
Nal_rA 15
Dota 2
NeuroSwarm244
League of Legends
Doublelift2340
JimRising 869
Other Games
WinterStarcraft635
ceh9366
UpATreeSC48
Organizations
StarCraft: Brood War
lovetv 9
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 14 non-featured ]
StarCraft 2
• OhrlRock 9
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• lizZardDota2109
League of Legends
• Jankos2145
• HappyZerGling103
Upcoming Events
RSL Revival
1h 26m
Solar vs Rogue
Maru vs NightMare
Sparkling Tuna Cup
2h 26m
IPSL
8h 26m
Bonyth vs Hawk
GSL
1d 3h
Replay Cast
1d 16h
WardiTV Weekly
2 days
The PondCast
3 days
Replay Cast
4 days
CrankTV Team League
4 days
Replay Cast
5 days
[ Show More ]
CrankTV Team League
5 days
Replay Cast
5 days
RSL Revival
6 days
Clem vs Lambo
Scarlett vs Cure
CranKy Ducklings
6 days
Liquipedia Results

Completed

ASL Season 22: Wild Card Qualifier
HSC XXIX
Eternal Conflict S2 E1

Ongoing

IPSL Spring 2026
Acropolis #4
YSL S3
CSL 2026 Summer (S21)
RSL Revival: Season 6
CranK Gathers Season 4: BW vs SC2 Team League
SCTL 2026 Spring
Eternal Conflict S2 E2
XSE Pro League 2026
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026

Upcoming

Escore Tournament S3: W3
ASL S22 SEASON OPEN Day 1
Escore Tournament S3: W4
ASL S22 SEASON OPEN Day 2
Escore Tournament S3: W5
CSLAN 4
Blizzard Classic Cup 2026
HSC XXX
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
Light Tournament 2026
Eternal Conflict S2 Finale
Eternal Conflict S2 E3
Logitech G Connect 2026
StarSeries Fall 2026
FISSURE Playground #5
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.