d2jsp
Log InRegister
d2jsp Forums > Off-Topic > Computers & IT > Programming & Development > Start Coding > Where To Start
Prev1234Next
Add Reply New Topic New Poll
Member
Posts: 8,564
Joined: Jun 13 2006
Gold: 4.75
Dec 3 2012 04:16pm
Quote (irimi @ 3 Dec 2012 17:05)
Most college CS programs are crap.  They're poorly structured and laden with an overbearing focus of application, so their students end up learning specific skills rather than learning how to learn.  I can guarantee you that by the virtue of your university using C++ as the vehicle for teaching programming, it falls under this category.

The good universities with good CS programs realize that language is mostly irrelevant, other than the fact that simpler, more abstract languages mean less impedance for learning the higher-level concepts that actually matter.  This is why places MIT/UCB don't teach their introductory courses using C++ (and up until a few years ago, used Scheme instead of Python).

Language is treated as a tool, and nothing more.  The focus isn't and shouldn't be on memory management, pointers, syntax, or other basic things that even a computer can do, but instead on problem solving, abstract thinking, and adaptability to ever-changing situations.  This is why everything you've said up to this point should be wholly and thoroughly ignored.


So linking to a python class is better than c++ cause it teaches you more about problems solving and abstract thinking, adaptability and ever changing situations? I guess you don't even understand what you preach.

Plus you say that my university focus on language, how do you know? Lol i'd really like to hear about that.

I'd also point out that the user at first wanted to learn programming, not problems solving. Thus, if i were to follow what you say, you should point out classes on logic and mathematics not language classes.

Discret math, Probs and Stats, Algorithm... but that's not the intent of the user, if it was he would probably try to sign in a university
Member
Posts: 4,605
Joined: Sep 15 2011
Gold: 9,464.00
Dec 3 2012 04:21pm
Quote (Fawar @ Dec 3 2012 03:16pm)
I'd also point out that the user at first wanted to learn programming, not problems solving.


The fact that you think the two are separate shows how little you actually know.

Again, stop while you're behind.
Member
Posts: 8,564
Joined: Jun 13 2006
Gold: 4.75
Dec 3 2012 04:31pm
Quote (irimi @ 3 Dec 2012 17:21)
The fact that you think the two are separate shows how little you actually know.

Again, stop while you're behind.


Mixing the two is the problem that make it hard to learn.
Divide and conquer is one of the most used strategy in computer science.

It is no good to know how to sort a database in O(Log N) if you don't even know how to compare 2 elements.... (Syntax vs Problem solving)

From your point of view it would be the best to learn to sort the database at the same time has learning the language itself. I see how easier it is... not
Member
Posts: 4,605
Joined: Sep 15 2011
Gold: 9,464.00
Dec 3 2012 04:41pm
No, the point is that learning the language is a trivial task once you know the high-level concepts. You're overplaying the importance of actually "learning a language". The reality is that you either know how to program or you don't -- and if you know how to program, what languages you know or don't know doesn't actually matter, because you can easily learn any programming language and become proficient at it on your own in a matter of weeks, if not days.

In other words, you can learn how to use a drill or a hammer pretty quickly on your own (just RTFM), but it's much harder to learn how to build bridges on your own. And if you understand how to build bridges, the task of learning how to use the tools necessary to do so is trivial by comparison.

So when someone comes into this forum asking "How should I learn how to program?", it's never productive to tell them how they can learn to use the tools (i.e. learn a particular language), because the first and most important thing anybody needs to learn and to know is that the tools don't really matter.

And honestly, the fact that you've had 2 years of a supposed CS/SWE education and *still* don't understand this fundamental concept is kind of sad. But it's not entirely your fault either -- see my above comment about how most CS programs are crap.

Quote (Fawar @ Dec 3 2012 03:31pm)
From your point of view it would be the best to learn to sort the database at the same time has learning the language itself. I see how easier it is... not

And to clarify my point even further, there are three key skills/knowledge/understanding that's required to implement a database sort.

1) Knowledge/understanding of how to sort data sets (this can be further generalized to "problem solving")
2) Knowledge/understanding of how to convert a theoretical solution for sorting a database into an actual, codified implementation. In other words, this is basically the ability to translate an internal high-level concept into an external expression of that concept.
3) Knowledge of a specific language, used as the actual vehicle for accomplishing 1 and 2.

Of the three, 1 and 2 are by far the most important and hardest to learn. 1 is the most important because it is the most universal. 2 is slightly less important than 1, but it's pretty damn important because everyone needs to be able to communicate what they know.

3 is the least important by miles, because it is simply a tiny extension of 2. If you know how to do 2, it doesn't matter if you know how to do it in C/C++, Java, Python, English, Klingon, binary, hex, or elvish. Because unlike the languages of the world, all programming language share the same basic grammar and semantics (mostly) -- they differ only in syntax, and learning syntax is dead simple.

-----

By the way, this is why mathematics is considered to be the "hardest" field, because it is a superset of basically everything else in the sciences. Everything else is just fluff on top of fluff.

http://xkcd.com/435/

This post was edited by irimi on Dec 3 2012 04:57pm
Member
Posts: 8,564
Joined: Jun 13 2006
Gold: 4.75
Dec 3 2012 05:28pm
Quote (irimi @ 3 Dec 2012 17:41)


1) Knowledge/understanding of how to sort data sets (this can be further generalized to "problem solving")
2) Knowledge/understanding of how to convert a theoretical solution for sorting a database into an actual, codified implementation.  In other words, this is basically the ability to translate an internal high-level concept into an external expression of that concept.
3) Knowledge of a specific language, used as the actual vehicle for accomplishing 1 and 2.




1) Learn how to solve a problem, mathematicly
2) Learn how to write the solution in pseudo-code
3) write the code...

2-3 are about the same if we take a closer look to it, since we are talking about learning programmation. Pseudo-code is about generlarities, concepts that exists in every language ( Loops, conditions, equations, variables) Its basic, if you know what kind of functions exist in programmation. Pretty sick to tell someone, please write me the way you would solve the problem but you have no clue what are the availables tools.

1) Is important, i agree, but being the first step to learn programmation... not really, since most can achieve solutions for most problems once they know what are the available tools. Commonly these solutions will be in 0(n^2) which is not efficient at all, but they will have a solution.
So Learning 1 before 2 is good if you intend to dive deep and learn alot, but if you just want to be a casual programmer, you can skip 1. Anyway, casual programmer will most of the time ask for solution on the net or do a google search of a solution. I pretty sure there is least than half of the world programmer that understand every single bit of math there is behind their code or implicit function being runned.


Member
Posts: 4,605
Joined: Sep 15 2011
Gold: 9,464.00
Dec 3 2012 05:35pm
2 and 3 are not the same at all, and that's what you're failing to get. all the things you've brought up in this thread as arguments for learning with C++ (like syntax and memory management) are irrelevant to 2.

the step going from pseudo-code to actual code is trivial. this is why (good) companies who do (good) software interviews are typically fine with their interviewees writing solutions in pseudocode or in whatever language of their own choice, rather than insisting that the interviewee writes in whatever programming language is used most prominently inside the company. because everyone who has half an inch of knowledge in this field understands that the actual language(s) you know is irrelevant, as long as you know how to program.

also, if you're writing code that is already written and can be easily found with a google search, then it's not worth writing.

and sorry, casual programmer? more like bad programmer. you can't just give a hammer to anybody and call them a "casual architect". you can't give somebody a needle or a surgeon's knife and call them a "casual doctor". so there's no reason to think that you can pick up a programming language and call yourself a "casual programmer".

and... programmation? if you're going to try to act smart and argue with people who have years of knowledge and experience on you, at least use real words.

This post was edited by irimi on Dec 3 2012 05:40pm
Member
Posts: 32,925
Joined: Jul 23 2006
Gold: 3,804.50
Dec 3 2012 05:38pm
I was going to share my opinion, but i don't think anyone cares.

Quote (Fawar @ Dec 2 2012 11:03pm)
Start by learning C++


:wallbash:

This post was edited by carteblanche on Dec 3 2012 05:38pm
Member
Posts: 4,605
Joined: Sep 15 2011
Gold: 9,464.00
Dec 3 2012 05:39pm
Quote (carteblanche @ Dec 3 2012 04:38pm)
:wallbash:


This is pretty much my (our?) response to everything that's come out of Fawar's keyboard so far.
Member
Posts: 10,812
Joined: Oct 15 2009
Gold: Locked
Warn: 20%
Dec 3 2012 05:41pm
Don't listen to the trolls who insist one language is better than another, pick a language, find a guide, and start writing simple code. Just jump in and get wet. Make a bunch of mistakes and learn from them! I'm a python lover, but c++, c, c#, ruby, java, php, and about a dozen others are fine too.

This post was edited by Azrad on Dec 3 2012 05:42pm
Member
Posts: 4,605
Joined: Sep 15 2011
Gold: 9,464.00
Dec 3 2012 05:42pm
Quote (Azrad @ Dec 3 2012 04:41pm)
Don't listen to the trolls who insist one language is better than another, pick a language, find a guide, and start writing simple code. Just jump and get wet. Make a bunch of mistakes and learn from them! I'm a python lover, but c++, c, c#, ruby, java, php, and about a dozen others are fine too.


This is pretty true. Again, language ultimately doesn't matter.

But the simpler the language is, the less you will have to focus on the language, and the more you can focus on, you know, programming.
Go Back To Programming & Development Topic List
Prev1234Next
Add Reply New Topic New Poll