Advanced vs. Simplistic Programming.

Pages: 12
I believe that a strength of autotools is that it will create such macros for you, leaving you able to write something along the lines of:
#ifdef THIS_IS_WINDOWS

I think that CMake can do this too.

@ OP: Do me a favor, avoid establishing this habit of seeking any kind of personal validation from others. You'll only end up burning yourself out by constantly fighting for the approval of users and sociopaths. If someone ignores your opinion in a given matter then someone in that informational transaction is wrong and it's either you or them. Your goal should be to reach the point where it is usually them.

That's a good tip - to worry about what I do instead of trying to look important.
AceDawg45 wrote:
That's a good tip - to worry about what I do instead of trying to look important.

Good tip, but not what I think he was saying. On several occasions I posted how many years I've been programming and each time a certain member would demand proof of it (which was sad in itself as you can't prove that just by plastering project code). For example, you could post code that shows you made a simple bootloader, kernel, and operating system, code that shows you have made a emulator for your favorite classic roms, code that shows a commercial quality Mario clone, code of a Doom 3 quality game, code for a web browser, etc. and you will find those who will stroke your ego and tell you how cool it is, but you will also find those who will view the code and then argue that you just copy and pasted code from existing projects, tutorials, and books and that only a fraction of the code is actually yours.

You know your experience, build on it, and continue to do projects you enjoy and that help you grow as a programmer, but don't worry about what others think of your level because you will find those who think it is advanced and those who think it is amateur and needs more work. Just practice and just keep going.

The only person(s) you should ever worry about proving yourself to is the person(s) you are being hired by to program for, be it a company, individual, or group.
Last edited on

I'll blame it on the idea that learning JAVA before C or C++ completely ruins people; most people will never be good programmers due to this.


This doesn't have anything to do with Java. This is just a way it is: most mainstream programmers are incompetent, regardless of the language, because most of them go to college for they heard "programmers make a lot of money; and graduating in programming is easier than e.g. going to medical school".

At the college I attended, C++ was taught after C, which was taught after Pascal (!). Those who sucked at Pascal, sucked at C and C++ even more and also did poorly at (facultative) Java. Those who were flying with Pascal, had no problems learning C++, and our course was really heavy on templates, to the point that no compiler of that time correctly passed the assignment tests (which were of a type: "write down what the following C++ program is going to output").

Generally mainstream industrial languages like C++ or Java should be optional at college. They are simply too unpure, they often belong to the same group (Java is quite close to C++, both are used in systems programming and the overlap is too huge to justify teaching both in detail) and CS should teach you core programming concepts, not just syntax and language-specific things. Sure, teach C++ as an example of template metaprogramming, but show them that there are also other (more powerful and expressive) types of metaprogramming like LISP-macros or Scala-macros or Java-reflection. If you want to teach OOP/inheritance, show at least a few languages to highlight differences in how OOP can be implemented (including class-less OOP like in JS). When taling about memory management, show them C++ RAII, some memory safe language without GC (e.g. Rust), some language with various kinds of GC (e.g. Java or C#). Otherwise, when learning only 2 or 3 mainstream languages, people learn only a small subset of programming concepts and are extremely narrow-minded and expect everything to look like C++ or Java.

Last edited on
CS courses should start with Haskell or a similar language. Once you've already learned several imperative languages, it becomes very difficult to learn a purely functional one because it's difficult to think outside of the imperative box, but the same effect doesn't apply in reverse.

After that, it's not so important. IMO every programmer should learn C, at least one assembly language, at least one LISP dialect and at least one scripting language besides JavaScript which everyone should know (because it's beautiful). Also most programmers should learn a logic language (Prolog) and a concurrent one (Erlang). Finally, if you want a job, learn at least one of: Java, C++ and C#.

IMO the order you learn languages in is largely irrelevant. People keep warning about learning Java or C before C++, or telling new programmers to start with Python or whatever. It doesn't matter, you can start with any language. I started with C++, then went to Pascal, then back to C++, then to C, and then back to C++, by which point I'd mostly learned C and C++ and completely forgotten Pascal. I only advise starting with a purely functional language because I hypothesise that it's easier to learn one when you don't already have a mental model of how programming languages look and how they work.
Is learning more then one language that important? I may learn Java, not likely, but I know Web Dev languages - excluding PHP - and the other languages I know are C/C++ and C#, but not big on C#, and Unity's C#.

All I really program Applications with is C++. I assume I can get by just fine with just C++, right? I don't see the point in learning all of these languages like Java or Python. I could learn Assembly, just in case I ever feel like making an OS, but I think Assembly is really hard to learn.
It is if you want to have a varied and balanced skillset. If you just want to write software, pretty much any language will do. If you want to write software well, it's best to have a broad understanding.

Besides, functional languages make it easier to write robust code. Not only does a program written in a functional language usually consist of less code than the same program written in an imperative language (and it's well known that less code => fewer bugs), but also, purely functional languages make unexpected side-effects impossible. Just by looking at the type signature of a function in Haskell, I can tell you with absolute certainty whether or not it modifies anything. Often, you can deduce roughly what a function does just from its type signature.
For me, the fun in programming comes from learning new languages.
For me, the fun in programming comes from learning new languages


I agree, but to me, it isn't worth learning a WHOLE new language, but instead, I will learn a new header, library, etc - that way, my knowledge on C++ is broader
AceDawg45 wrote:

I agree, but to me, it isn't worth learning a WHOLE new language, but instead, I will learn a new header, library, etc - that way, my knowledge on C++ is broader

That view will make you only useful to a fraction of programming jobs that focus solely on development with C++.
Once I learned C++, learning the syntax in new languages ends up being quite easy. Except perl. It just... it's not right.
Learn a shell scripting language. Perl is basically a combination of Bourne shell and C.
I guess it depends on the code as well. Most scripts I've tried to maintain in perl are pretty obfuscated so I guess I'm a bit biased.

In any case, I can read poorly written Python where as I cannot read poorly written perl.
Topic archived. No new replies allowed.
Pages: 12