:-/ Hardware performance becomes increasingly high. Software performance seems to decrease, because developers (who are not necesarily programmers) believe that the hardware is so powerful that it will carry out any task.

:| On some of the "geeks forums" every child can advise you to update your computer, buy some quad-code processor, install the latest updates for every single program in your computer, get an antivirus like NOD32 (because it consumes little resources), update the virus database every second (if that would be possible, they'd want do it too).

:@ Every stupid child now creates trojan viruses with Visual Basic, even if the virus needs the 100-Mb Framework, known as .NET, and furthermore, they don't want to give up that framework and learn a real programming language (not Visual Basic).

:) You know .NET Reflector, that program that allows you to see some of the source codes behind .NET programs or the framework itself... I have never seen a bloatware like .NET. Who will learn all that stuff? Basically, it's a god framework, but it has tons of other classes, for everything on this planet (except washing machines, toilets, and a few other things). Eh, just joking... For 80% of the classes I couldn't even find a meaning! Inside classes, private data is so Object-Oriented...

I was against .NET. Some told me I was right, some explained me how I was wrong. Some philosophy is welcome here:

"Any intelligent fool can make things bigger, more complex, and more violent.
It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
- Albert Einstein

A designer knows he has achieved perfection
not when there is nothing left to add,
but when there is nothing left to take away.
- Antoine de Saint Exupery

A guy gave me quite a good explanation. It's a problem of productivity here. People only want the programs to work. Producers only want to produce.

Microsoft seems to help producers, but I think this is a just trick to get more and more clients (especially home users) to buy Microsoft software. Anyway, I am tired on this subject.

Engineers worked hard to create the hardware and it is admirable what they achieved. High-speed CPUs perform a mind-twisting number of calculations per second. Why isn't the software high-speed too? I don't want a framework written entirely in ASM, but simpler is always better.

A year or two ago, I tried to set up a framework of my own. of course I had no chance, but I learned a few things. This is, in fact, the reason for everything I do. Now I know C++ from A to Z. My latest achievement is a template for complex numbers. Who cares? There is no one to help me, I am doing slow and small steps.

You know "Boost"? It is a C++ framework designed to simplify the code, by introducing some classes and templates. It is a "Platform abstraction layer", but is so complicated, that I can't follow it. Nested templates, various classes, and lots of them are designed for internal use.

Now let's move to another subject: ASM.

I recently started learning assembly and I like it. It's not difficult to learn and I can understand well how computers work. I hate that I had to search and search and search to find complete information about the differences between Intel CPUs. But even when I thought I found the right information, someone told me I was still wrong to some aspects. There is either a serious lack of documentation about this subject, either a serious problem with me.

Another subject: different platforms

As far as I know, Intel architecture is the most used in the IT industry. I don't know why other corporations even bother to create their own architecture (Motorola for example). It will result in a headache for programmers.

Concerning the operating systems, a difference between Windows and UNIX is the executable format. Windows uses PE and UNIX uses ELF. They both say they have their advantages. For me it's only a source of confusion.

Some time ago, I wanted to compile come .cpp into an .obj, then link that obj with a windows.lib, linux.lib or mac.lib in order to obtain the executable for each platform. I thought it would be a great idea, but it is SO impossible, and people laughed at me. I had to understand myself why thing are like this.

Right now I don't know what to do next. Because I wanted to make independent and efficient programs, I went through every dark corner, avoiding Java for some reason...

Should I switch to .NET, switch to ASM, switch to Java, web design, or should I try to create an open-source project where I can write native, efficient, independent software, and whatever I dream of, or should I just stop programming because I am a mess?

Undecided, stuck, lost, whatever...

Recommended Answers

All 13 Replies

>because developers (who are not necesarily programmers) believe
>that the hardware is so powerful that it will carry out any task
This is an unfair generalization. Just like any field, software development has great variance in the quality of developers. There are a handful of gurus, a half-decent amount of overachievers, a healthy minority of retards, and the rest are mediocre. It's the latter two who give us a bad name by eschewing efficient code practices and hoping the framework/hardware will save them.

>and learn a real programming language (not Visual Basic)
Visual Basic isn't a real programming language? That sounds like an illogical bias based on personal opinion to me.

>I have never seen a bloatware like .NET. Who will learn all that stuff?
Bloatware is different from an extensive library.

>Now I know C++ from A to Z.
I doubt that.

>but is so complicated, that I can't follow it
If you knew C++ from A to Z then you wouldn't have a problem following the code for Boost.

>There is either a serious lack of documentation about
>this subject, either a serious problem with me.
You're either looking in the wrong places, or you don't understand the documentation found at the right places. Did you read Intel's processor documentation? The lion's share of what you need can be found there.

>I don't know why other corporations even bother to
>create their own architecture (Motorola for example).
...

>Right now I don't know what to do next.
Maybe you should try something that isn't programming related for a while. Our field seems a bit too intense for your frail sensibilities.

I hate that I had to search and search and search to find complete information about the differences between Intel CPUs. But even when I thought I found the right information, someone told me I was still wrong to some aspects. There is either a serious lack of documentation about this subject, either a serious problem with me.

Did you go get a book? Everything you'll ever want to know is unfortunately not yet available on the internet. I can't even tell you how many books are written on each different architecture that detail the commands and how to use them.

Another subject: different platforms

As far as I know, Intel architecture is the most used in the IT industry. I don't know why other corporations even bother to create their own architecture (Motorola for example). It will result in a headache for programmers.

Ah yes, and there should only be one type of cereal because it causes headaches for children. And there should have only been one Japanese anime created ever because having multiple animes out there only causes headaches for anime fans. Oh and the age old argument that console makers should just team up and make ONE console that plays all games because multiple platforms create headaches for gamers... Right. [/sarcasm]

Well for one: no competition is a terrible thing. If Intel were the sole architecture czar and had nobody else to compete with they could charge exorbitant rates for anything that they produced, and every other company would need to license their technology to use it. It would be terrible. All the cost that, say AMD shelled out to Intel just to license their architecture in their computers would be passed along to the consumer, ie YOU

Also, companies create an architecture that align with their own ideals of what the computing world needs. So if Motorola thinks they have the answer for a high-speed, reliable chip that can be cut down to a small enough size to be embedded into a phone, then there's absolutely NO reason not to try and make it. Having multiple architectures creates professional programmers who are specialized in said architecture, which puts them in demand. This demand helps spur job growth, which helps boost the economy, so on and so forth.

Concerning the operating systems, a difference between Windows and UNIX is the executable format. Windows uses PE and UNIX uses ELF. They both say they have their advantages. For me it's only a source of confusion.

Some time ago, I wanted to compile come .cpp into an .obj, then link that obj with a windows.lib, linux.lib or mac.lib in order to obtain the executable for each platform. I thought it would be a great idea, but it is SO impossible, and people laughed at me. I had to understand myself why thing are like this.

Right now I don't know what to do next. Because I wanted to make independent and efficient programs, I went through every dark corner, avoiding Java for some reason...

Should I switch to .NET, switch to ASM, switch to Java, web design, or should I try to create an open-source project where I can write native, efficient, independent software, and whatever I dream of, or should I just stop programming because I am a mess?

Undecided, stuck, lost, whatever...

I don't think you should stop programming but maybe you should stop giving up on yourself. If you put in the effort and the time and the heartache you'll eventually get to where you want to be. It is our responsibility to take advantage of the opportunities that we are presented in life. It takes many years and much sacrifice to learn anything in life, nothing comes easy.

So my advice to you is to simply not give up. You have your whole life to learn, and a huge part of the learning process is stumbling. You have to make mistakes to learn from them. You also have to actively look for help. And you can't rely on the internet for everything. Sometimes it just takes a stab in the dark to draw blood.

>Visual Basic isn't a real programming language? That sounds like
>an illogical bias based on personal opinion to me.
Visual Basic is aberrant and out of touch with reality. It will only teach you bad practice.

>>Now I know C++ from A to Z.
>I doubt that.
C++ syntax is not difficult. Following Boost's structure was a bit more difficult, because I couldn't possibly know the meaning of each structure and nested template. For this job, I would need patience, practice and some documentation.

>Did you read Intel's processor documentation?
Yes, I did. It is briefly explained the history of the CPU architectures. In order to learn assembly I read the book "Art of Assembly". In order to find the entire list of interrupts, I use Help PC and some online documentation.

>You're either looking in the wrong places,
>or you don't understand the documentation
>found at the right places
Tell me the complete list of x86 architectures, as well as their special features. From what I know, they appeared in the following order:

8088
8086
80186 / 186 --- I have a feeling this is 8086; this had 20-bit addressing (segmented)
80286 / 286 --- This one had 24-bit addressing (protected mode)
80386 / 386 --- 32-bit addressing, 32 registers, continuous memory (enhanced protected mode)
80486 / 486 --- 32-bit addressing, 8Kb L1 cache
80586 / 586 --- this is a little ambiguous. Is this one the "Pentium"?
80686 / 686 --- is this one the "Pentium Pro"?

Pentium Pro had 64-bit external bus size and could address up to 64 GB. Why this is explained only in the Intel manual?

In an assembly book/tutorial/whatever, they dropped the 0 in the CPU names; (8286,8386, etc...) I have never heard of this in any source of documentation.

>Bloatware is different from an extensive library.
Ok, if you say so... In my opinion, any intelligent compiler has some native types (int, char), but this "extensive library" seems to forget... some of the components should also be built-in.

Instead of classes like Int16,Int32,Uint16, etc, the compiler should mimic member-functions. Think of it

>Visual Basic is aberrant and out of touch with
>reality. It will only teach you bad practice.
Thank you for proving my point.

>C++ syntax is not difficult.
HA! Tell me, is this error intuitive at all?

#include <string>

int main()
{
    std::string s();

    s = "12345";
}

I have a laundry list of similar issues. C++'s syntax is only "not difficult" if you restrict yourself to the most basic of basics. And even then you need to watch out for unexpected pitfalls. :icon_rolleyes:

>Yes, I did. It is briefly explained the history of the CPU architectures.
Then you didn't read all of the documentation. There are PDFs you can download that illustrate in painful detail both the innermost workings of the hardware and the specifics of the instruction set.

>Ok, if you say so...
Translation: "I'm too stubborn to listen to anyone with a different opinion. My mind won't ever change, so you might as well give up now."

>Instead of classes like Int16,Int32,Uint16, etc, the
>compiler should mimic member-functions. Think of it
Um, what? You might want to elaborate on that statement, because it makes no sense at all as written.

I think I finally "found my way". After a few days spent thinking, I finally made up my mind:

:yawn: 1) Visual Basic IS REALLY stupid
:twisted: 2) No point of view is more important than mine (joking)
:) 3) I will now start learning Java
:) 4) I will make a PAL of my own, designed in my own way
:) 5) I will learn Assembly for Windows and Linux, leaving bootable applications
:-/ 6) I still wonder if elite programmers will ever join together in a team, in order to create a masterpiece. Or it is better to work separately, and satisfy only their personal interests? The idea of a competitive world is not actually what I dream of...

. . Should I try searching for kids like me, who are not necessarily interested in any money? Or there is no such thing?

. . All I did in the past 6 years was to endlessly play around with the PC and mess around with code lines... I felt "stronger" as I found out new and exciting things. Now I know C++ from A to Z and you doubt it. What for? This motivates me, and keeps me going... Where? I will surely find out some day... Till then, I don't want to fight anybody because of my opinions.

. . I want to see a team of coders doing their job perfectly, eliminating the mass of idiot coders. Idiot or not, I want to be eliminated by coders who are way better than me, and not by some "extensive library" that I will never get to understand, or agree with. Why don't you want to see what I know, first, and then what I don't know?

>1) Visual Basic IS REALLY stupid
You can think whatever you want as long as you aren't too foolishly proud to consider it as a viable option when appropriate. I despise Java, for example, but I'm quite skilled with it because I'm smart enough to objectively judge my tools.

>2) No point of view is more important than mine (joking)
Close. No point of view is more important than mine because I've yet to meet someone with enough sense to have a better one.

>3) I will now start learning Java
Good for you. Every language you learn, and every tool you utilize gives you valuable experience that can be applied in seemingly unrelated places.

>4) I will make a PAL of my own, designed in my own way
Best of luck to you.

>6) I still wonder if elite programmers will ever join together
>in a team, in order to create a masterpiece.

I do it every day.

>The idea of a competitive world is not actually what I dream of...
A world without competition is a world without innovation.

>. . Should I try searching for kids like me, who are not necessarily >interested in any money? Or there is no such thing?
Try joining an open source project. Money is rarely the biggest motivator for the best developers.

>Now I know C++ from A to Z and you doubt it. What for?
Because I don't believe it's possible to know C++ from A to Z. It's far too big, and there are too many nuances. If you want me to test your knowledge and inspire new directions for research, I'd be happy to do so with a handful of choice questions.

>. . I want to see a team of coders doing their job
>perfectly, eliminating the mass of idiot coders.

Fantasy land is one big bottle of liquor away.

>Why don't you want to see what I know, first, and then what I don't know?
Give me a reason to care.

Every stupid child now creates trojan viruses with Visual Basic, even if the virus needs the 100-Mb Framework, known as .NET, and furthermore, they don't want to give up that framework and learn a real programming language (not Visual Basic).

Wow, I feel old all of sudden. I remember virii under a few Kb...

1) Visual Basic IS REALLY stupid
3) I will now start learning Java

Java is stupid. Learn the ways of pure machine code and you'll never have to worry about seeing such a thing as a 100Mb application. As there'll always be a struggle with a couple misbehaving bytes.

I've just participated to a regional contest. I've been preparing for it for some time, and the last days, I've been quite busy...

Let me describe to you my "neighborhood". I live in Romania, in a region called "Iasi" (where "s" is pronounced as "sh"). It is also a big city here, called Iasi. My town is 65 miles away from here, and it's the second most important town in this region (LOL). The problem is that it sucks in every single way.

It has 40 000 people, 100 dogs and one or two decent ISP. Maybe I'm selfish, not educated, or idiot. I don't care, because in all my 17 years I can't remember to have found too many specialists... passionate specialists/experts/masters...

I told you today I went to a contest. I participated with an "educational software". I gave them a standalone HTTP server, a nice interface for a website, and the ability to access a whole library of Chemistry within milliseconds, using AJAX (it was a chemistry contest). For me, it was a pleasure to create this program, and I think it's a really nice one. What about the other participants?

Only one of them had an impressing project, made with Java. He simulated the relationship between students and teachers, providing an interface for each of them. The students had notebooks, chat room (especially for discussing with teachers), they had homework, test papers, etc. The teachers had the ability to create test papers, evaluate their students, view the evolution of each student, spy upon their desktops, and much more.

The other three participants didn't even know they didn't have an educational software, but a simple website (one of them even thought that a so-called JavaScript test paper is an educational software, itself!). The rest of the participants in the contest presented web pages, but only a few were well-prepared.

This whole story didn't take place in my wretched town, but in Iasi, which is the second biggest city in the country (400 000 people, 1000 dogs and enough decent ISP).

This is actually worrying me... I know the guy with the Java project. He said it took him only 6 hours to piece it together, because the components were already designed by him, in the past. Very well done! His software also uses databases, networks, logs, and many things you may think of, and he is only 18 or 19 years old! Now THAT is a professional!

This is the reality? Only few programmers "grew", in this region that is said to be one of the best source of coders for the western countries? Microsoft hired many coders from this part of the country. Siemens uses programmers in Iasi to program micro-controllers...

Maybe I have a wrong conception about how things are going on, but I have better expectations for those guys. I'm tired of thinking that somehow "I'm the best...". I need some team mates, some more competition. I need some guidance! I have almost nobody to compare with, and nobody to tell me what else could I learn.

I learned everything I know not because of the money that is involved in IT industry, but because I like this very much. I don't want to believe that after 30 years of IT, the best thing that could happen to us, programmers, is an "extensive library", an absolutely magnificent programming language, called "Visual Basic" (which some tend to appreciate), and a bunch of disoriented kids that are said to become programmers in the near future.

PS: I forgot to say that I also have a creepy mayor.

Sometimes the idiot coders are the "experts". Many programmers take shortcuts. Error-handling is time consuming and may account for more than 50% of the total code.
=============================
If you really want to learn more about hardware, try figuring out the power consumption of each component.
- Does a CD/DVD drive consume more power when burning at a higher speed?
- Does an Lcd Monitor draw more power than a Crt Monitor?
- Do the latest graphic Cards support power consumptiom for LCD or Plasma screens: will graphics card get too hot and expire from power draw though?
- How much power does the actual Power Supply Unit use?
===================
Learning Java will require you to learn VbScripting. You cannot escape from the VB world.
===========================
Can you dismantle a computer then put it all back together? If so, then try doing it with components from ten different computers.
===========================
Just be like the rest of us - A Master of everything and an Expert at nothing. (I've forgotten the actual quote but you know what I mean).

I know VB and VB script, because I started with it. But what is the connection with Java? I have a book called "Java, from 0 to expert". I bought it several years ago, thinking it was a JavaScript book. At that time I only knew HTML and I wanted to make the next step.

Years later, when I almost finished C++, I understood Java. It it so object oriented... Right now I feel like I'm ready to learn it. I only need a spark.

-------

I'd also want to ask you for some comparison.

1. Windows vs. Linux
I know lots of dark corners in Windows XP (also NTFS security settings), and compared to Linux, I would say its only handicap is the configuration. Windows was designed for consumption. Otherwise, it could be almost as secure as Linux, and AFAIK Linux is for advanced users, and not so much for simple users.


2. DirectX vs. OpenGL

I started with OpenGL. I was pretty fascinated because I was finally able to make interesting applications. I made a labyrinth out of squares. I was a bit disappointed because it was running very slow, and a DirectX demo from the Internet was way more complex and ran perfectly. Because of this, I started DirectX. Now I understand the concepts, but it costs me some time to make an application.

Recently, I got the recommendation to learn OpenGL. I was told that DirectX took over OpenGL, or something like this, but someone else told me it was not true.

Some told me to learn DirectX, some told me to learn OpenGL... Which would you recommend?


3. How to make a portable application?

I'm talking only about the operating systems running on CPUs with the Intel architecture. Let's say we have a "hello world" program that outputs plain text. The program only uses printf/puts. The machine code should be identical when compiled for all the operating systems. The difference between executables should be in headers and import/export sections.

Is it possible to compile a code to RAW binary, and execute that code with the help of a launcher? The launcher is specific to an OS, and should import the appropriate libraries. These libraries should export exactly the same functions, but their implementation should be specific to the OS.

This way we could have a program that uses windows/sound/some graphics, and this program could be executed on Windows, Linux, as well as, Mac Os.

I want to combine C++ with some ASM tricks, in order to achieve this. If this is not possible, I will switch to Java.

4. Do you have any recommendations of what should I do next?

I was thinking of Javascript where VBscripting is utilised. As for everything else, you are out of my league.

The only thing I think I know about OpenGL is that it doesn't work on all computers and most video cards. Some PC Games do require OpenGL but they are few and far between. Most video cards support it but not proficiently.

Perhaps you should start a tech web site offering your services for hire. Start with a help site for the easy stuff that you know about then offer to write programs for a fee. Most programmers, if not all learn as they go. You cannot memorise every facet of a subject. Even if you can, something new will come along and be better suited.

It is best to be proficient in a snject and less proficient in everything else. Knowing a little bit of everything does not work. Spend at least 2 years in a subject. If you are going to learn JAVA then learn how it works and create projects, Get ideas off forums and the internet. I've created over 500 vba and vb programs. Some I cannot release to the public without modifications because they are projects I did for businesses ( for a small fee). Others I will not release the working code because it took 8 weeks to write and will work in any platform (I think?). But most of it is simple code structure.

Many Programmers take shortcuts. They use very little error-handling and overuse "On Error Resume Next" which does not account for problematic errors. Many programmers do not use variables or over use variables when it is not necessary.

Be an expert in your field. Do a Diploma of Technoloy or a Certificate in Computer Science to give yourself credentials. Yeh, I know who needs them? You do if you want to get high fee jobs. Be a freelance person. Work when you want to so you can have time for personal projects.

If you want a project to work on, invent the IBox. I've got mine, how about yours? An IBox is basically a computer with only Internet usage only. If ever it gets mass attacked by hackers and viruses, they can't see outside the box. other computers can see in, though.

The ultimate Ibox (or EBox, if you like) is a boxed component that is like a computer but can only be accessed by an outside computer.
Copyright Pending - May 2009 Jupiter 2 Technology Systems.

Then' I'll do my best, to be the best in my field...

I said earlier something about a PAL... I want to implement some arrays first, and use them to play with bitmaps, then provide as much optimization as possible. One goal would be a card game created in a few minutes, using the PAL.

So far, I have a series of "typedefs" for integers, a class called "Data", one called "DataHandler" (someone suggested me a smart pointer instead), a template called "GenericArray", a class called "Bit" and an instance of the "GenericArray" called "BooleanArray", based on "Bit", which should provide the facilities and the optimizations to store one value per bit. All these should deal with arrays, and some can be used easily with bitmaps/images of all kind, sprites, etc...

This was a brief introduction. I would like to have someone to discuss the whole design with, even if I reinvent the wheel (as usual). Shall I move to the C/C++ forum, to show off the source code?

Absolutely, because what I know about C++ is ... that's all I know. It's name.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.