Good high-level programming language

What's not the way the world works? That people don't learn things in the right order? Do you really believe that people need to perform right away? So, first year pre-med students are doing cardio-thoracic surgery?

I just know from experience that the focus at universities is not on the lower level like assembly and pointers and such, but more on software engineering in general.
They can design an application, but they're generally not very good at implementing it.
Only people who are 'hardcore' like the older generation was, and do their own studying, get a deeper insight in programming and optimization.
However, quite a few of those never grew along with the software, and fail to see the bigger picture. Software development today is nothing like it was 20 years ago.

If your version really is the way things work, why not work to fix it?

I'm in no position to do so. A lot of people don't seem to want to know everything about programming anyway. They just want to make money and get a career.
I see programming as an artform, which is why I am a demoscener. But I can't expect most people to see things the way I do.
 
I am learning python right now on my own. I am so amazed at how easy it is to do things in python versus C or Java. It really feels like the way it was designed was almost perfect. I am a little amazed they aren't teaching python as an intro high level language rather than Java or C.

That all being said, I still love to get down to the byte level and work with C or Assembly when I get a chance just to mess around. I think it is good to implement high level data structures, but still have an image in your head about what actually the computer is doing. For example if you have a string, you are really working with a continuous block of memory where each byte in the block is a character, and each character is made up of a series of bits in ASCII (or whatever encoding is used). This what I am thinking about when I code, it is always in the back of my mind what is ACTUALLY happening. Programming in C allows you to think in this way.

I am also one that thinks programming and software engineering require two different skill sets. For me, since I love to think low-level, I usually get overwhelmed with tasks like analyzing a new API or coding and maintaining a large project. An entire other skill set that I haven't even begun to master is the software design process. I know of people that can literally design an entire application down to each method call all on paper (or computer), and then literally type and test the program in no time at all.
 
I am learning python right now on my own. I am so amazed at how easy it is to do things in python versus C or Java. It really feels like the way it was designed was almost perfect. I am a little amazed they aren't teaching python as an intro high level language rather than Java or C.

Probably the same reason why they don't use BASIC:
It might be easy to do things, but it won't give you a deeper understanding of how such concepts work. For educational purposes it's better to know what's going on at a lower level and doing certain things manually.
To me, learning to program doesn't mean that you can write simple things in a simple language that sort of work. It means that you understand the basic concepts of solving problems using a CPU.
Programmers of languages like BASIC, Perl, Python, PHP and such, often have pretty bad programming habits, because their programming language allows them to get away with it. You'll quickly see the difference when code is written in such a language by someone who's also familiar with more 'difficult' languages and has learnt more discipline in writing code because the language required it.

That all being said, I still love to get down to the byte level and work with C or Assembly when I get a chance just to mess around. I think it is good to implement high level data structures, but still have an image in your head about what actually the computer is doing. For example if you have a string, you are really working with a continuous block of memory where each byte in the block is a character, and each character is made up of a series of bits in ASCII (or whatever encoding is used). This what I am thinking about when I code, it is always in the back of my mind what is ACTUALLY happening. Programming in C allows you to think in this way.

Exactly, that's why it's very important to be fluent in C if you want to be a good programmer. Even if you're not actually using C for writing your daily code.
Another advantage of C is that it's a rather simple language and works virtually anywhere. From simple microcontrollers down to large supercomputers, and regardless of operating system. I've come across many platforms where the only two options to program them were assembly and C.

I am also one that thinks programming and software engineering require two different skill sets. For me, since I love to think low-level, I usually get overwhelmed with tasks like analyzing a new API or coding and maintaining a large project. An entire other skill set that I haven't even begun to master is the software design process. I know of people that can literally design an entire application down to each method call all on paper (or computer), and then literally type and test the program in no time at all.

Yes, in the end you'll have to be good at all levels... Because when you are working on a project at a higher level (design stage and such), you have to be able to think ahead a bit, to visualize how certain parts can be implemented, where potential bottlenecks and problems can be etc. I often see that people over-engineer certain parts, while taking very difficult parts for granted. I strive for making a design as simple as possible, because it will be easier to maintain later, and will perform better.
 
Back
Top