What's new after 20 years?
-
I wanted to give a constructive answer to this question. As far as technology, "Not much." Compiler support for C++ has improved, but it's still mostly the same language. C++ was already mainstream 20 years ago. Microsoft has released three whole new programming APIs in the last 20 years depending on how you count them. But Microsoft had released a couple of new APIs in the period right before that, so nothing new there. You will have the advantage of not having wasted your time learning several great new things from Microsoft. In 1990 people were talking about functional programming as if it would be the next big thing. And 20 years later most of them are still talking. Moore's Law has not changed in 20 years. But the consequence of Moore's Law is that computers are a thousand times faster. And a consequence of that is that toy languages built by individual people run fast enough these days to do real work. So there are more language choices. Unless you want to go fast, in which case you have basically got C++ or some languages nobody uses. Teams are the same; full of geeky people, with all the joys and challenges of working alongside geeky people. If you like teams, that's good. If you hate teams, that sucks. Fewer women though. I personally think that's sad. What's Different The software industry really took off about 1995. A lot of code bases got their architecture laid down during the late '90's. So today there are relatively more jobs maintaining creaky old code bases, and relatively fewer jobs doing new code, than 20 years ago. The skill set for maintaining creaky old code bases is a little different than the skill set for writing new code. This one factor may most affect your employability and the enjoyment of your work. Another consequence of the industry taking off in 1995 is that the average developer is younger today than 20 years ago. There are at least fifty times as many working developers (in the U.S., but basically everywhere else too) today as there were 20 years ago. That means the average I.Q. of a developer is much closer to 100, with the kind of results you'd expect. With developers less mature and less intelligent (on average, I'm not talking about anybody on this site :-)), and with relatively less green-field coding going on, it seems to me that management has gotten harsher and probably also less competent due to the same growth-related force. So there is more work that is dreary and it's harder to find staff fit for really interesting work.
Thanks for your insight and input!! It sort of sounds like "Same, same, but different" I'm European based so it will be interesting to see what is valid here, but I'm sure its about the same... Thanks again!
-
I'd take a look at some form of Java. It will be familiar to a C++ programmer. It runs on many different platforms. It's so similar to C# that you'll actually end up building .NET skills (or, at least, learning more contemporary thought processes) in a roundabout way. My academic background is in C++ as well, and I've done a lot of .NET professionally (you can't always expect your bosses to have good taste :) ), but I've never had any trouble picking a Java project up quickly and being productive. To call it C++ with a lot of the stupidity filtered out is an oversimplification, but not an entirely unreasonable one.
C# and Java are two of the languages I've dabbled with over the years. I've even been involved in a Open Source project using Java, and found it rather workable!! Thanks for your input!
-
I’ve coded for most of the past 20 years. C/C++ has given birth to many variants including C#, Java, JavaScript, PHP, etc… C# is huge; however I’ve seen an arrogance around it that just turns me off. BASIC (my favorite) is still alive and strong with a host of its own variants. Unfortunately it still endures a stigma regardless of any specific variant’s actual capabilities. SQL variants dominate most relational database programming. A NoSQL[^] movement also exists, however I'm not up to speed with it. Oddball syntaxes such as Erlang, Haskell, and Lisp have features that give food for thought. I’d say the biggest change has been in paradigms; specifically OOP[^], AOP[^], and functional[^]/declarative[^] (think HTML, XAML, SQL) to name a few. In short, if you’re looking for a star then grab a telescope. If you’re looking for a programming language then first ask yourself what you want to program. Use that as a guide to pick a language. Wikipedia has a few comparisons that might be helpful here[^] and here[^]. When in doubt, learn them all! (It can only help.)
I must admit that I've found the sheer number of languages/paradigms somewhat mind-boggling. Through this question here I've understood that I can dust off a few things and have fun with that... and so I will! After that I'm going to look at some of the paradigms you brought up and see what they are and get a feeling for them. On a sidenote, I have a stepson that thoroughly enjoys Haskell and Erlang, but then again he is a CS major... Thanks again for your input!!
-
Well I hear you, and been-there-done-that (my wife suggests I still do) I'm going to dust off a few things and have some fun!!!
That's the key. Have fun with it. I make a six-figure income from something I just wanted to do to "have fun" about 35 years ago. It was never about the money. Funny how things work like that. -cb
-
That's the key. Have fun with it. I make a six-figure income from something I just wanted to do to "have fun" about 35 years ago. It was never about the money. Funny how things work like that. -cb
That's when you do your best work too!!!
-
I get it... I want a T1 myself!
Actually, Hunter, you don't need a T1 anymore. (That is SO 1985!). Now you just get a cable modem and a Road Runner account with a 40Megabit-Per-Second connection! -cb ;)
-
PRO TIP: It isn't going to ever happen. After years of promising this the fact is we are worse of today than 10 years ago because we now have different form factors. It appears the whole thing is getting worse to me and I expect soon to have a request to build a website that looks good on a clay tablet or as a tattoo on an elephant's arse.
-
Wow! Never thought of this!! Fun stuff!! Also never thought that .NET could be used with microprocessors... beats coding assembler (which I've done a bunch) I've got a close friend that works at a microprocessor manufacturer and we have all kinds of interesting talks, all the time about this very subject, but more on R/C aircraft. I could use a snake-like drone now to wipe out some rats that are in the attic!!!
Have a look at these fantastic offering! http://www.robotshop.com/ghi-fez-rhino-net-microcontroller.html[^] http://www.tinyclr.com/[^] http://www.pololu.com/catalog/product/777/resources[^] http://www.mindsqualls.net/MotorControl.aspx[^]
dev
-
Dave's not here, man.
"Microsoft -- Adding unnecessary complexity to your work since 1987!"
-
Dave's not here, man.
"Microsoft -- Adding unnecessary complexity to your work since 1987!"
-
I must admit that I've found the sheer number of languages/paradigms somewhat mind-boggling. Through this question here I've understood that I can dust off a few things and have fun with that... and so I will! After that I'm going to look at some of the paradigms you brought up and see what they are and get a feeling for them. On a sidenote, I have a stepson that thoroughly enjoys Haskell and Erlang, but then again he is a CS major... Thanks again for your input!!
glad to help
-
I've been away from the business about 20 years now. I studied CS in the early 90's when C++ was the upcoming star, to find out that it is old hat now-a-days. I've been side-tracked by accounting and it would be interesting to find out your take as to what an Old Fart like me should update my skills with...
If you have nothing constructive to say, be silent!
As someone said, there are many paradigms. I like everything done by pragmatic programmer, but there is a book Seven Languages in Seven Weeks that gives a good survey of what's out there.
-
I've been away from the business about 20 years now. I studied CS in the early 90's when C++ was the upcoming star, to find out that it is old hat now-a-days. I've been side-tracked by accounting and it would be interesting to find out your take as to what an Old Fart like me should update my skills with...
If you have nothing constructive to say, be silent!
PHEW! The first 40% of my career was dominated by C/C++. This didn't mean I didn't program in anything else (just for business, by 1997 I'd programmed in C, C++, Pascal, 8086 assembly language, Dos batch, Rexx for OS/2, and SQL, and Microsoft Basic in its several dialects before VB6 and Office 97). Now, I rarely if ever write anything in C++, and only slightly more frequently in pure C. It's all either VB.NET or C# on the server, Javascript (with some VBScript on some legacy ASP apps) in web browsers, and lots of SQL. SQL has become the standard database query language. Any developer working with commercial databases will eventually wish they knew SQL. It's not new, though. I strongly recommend giving Javascript some time and thought. Despite its syntactic similarities, it is NOT much like C/C++. The Code Project's Daily News recently referred to a Java JVM with compiler and decompiler that had been written in Javascript - this ring a bell with the way C was pitched to us back in the distant past? Yet Javascript is more like Lisp in the way you can instantly create and redefine classes and instances at run-time. It's the base language for most of the client frameworks on the web, making it an essential stop if you plan to play with web programming. It's not new, but it is the bricks from which much shiny new stuff is being made. Java, or rather the Java Virtual Machine, is the current "universal language." The Java Virtual Machine insures that Java code will run identically on an 80386 relic or an MVS mainframe and everything in between, including a host of smart devices that live in your home and car. Think of how you would build C/C++ for folks who you never want to bother with what's actually inside their data (you know, like BITS) and that's Java. C# on the .NET environment is similar, but much less portable. Go and Dart seem to be the contenders for a new system language to do what C once did. Dr. Dobb's Journal has some interesting articles about these. I'll skip the functional languages, except to say that if you've never played with Lisp, they will change your world. Any of them will do this, so I suggest you try any of them. It will open your mind to new ways of thinking about computation. That should do for starters :cool:
"Seize the day" - Horace "It's not what he doesn't know that scares me; it's what he knows for sure that just ain't so!" - Will Rogers, said by him about Herbert Hoover
-
As someone said, there are many paradigms. I like everything done by pragmatic programmer, but there is a book Seven Languages in Seven Weeks that gives a good survey of what's out there.
I'll have to take a look at that book!! Thanks for your input!
-
PHEW! The first 40% of my career was dominated by C/C++. This didn't mean I didn't program in anything else (just for business, by 1997 I'd programmed in C, C++, Pascal, 8086 assembly language, Dos batch, Rexx for OS/2, and SQL, and Microsoft Basic in its several dialects before VB6 and Office 97). Now, I rarely if ever write anything in C++, and only slightly more frequently in pure C. It's all either VB.NET or C# on the server, Javascript (with some VBScript on some legacy ASP apps) in web browsers, and lots of SQL. SQL has become the standard database query language. Any developer working with commercial databases will eventually wish they knew SQL. It's not new, though. I strongly recommend giving Javascript some time and thought. Despite its syntactic similarities, it is NOT much like C/C++. The Code Project's Daily News recently referred to a Java JVM with compiler and decompiler that had been written in Javascript - this ring a bell with the way C was pitched to us back in the distant past? Yet Javascript is more like Lisp in the way you can instantly create and redefine classes and instances at run-time. It's the base language for most of the client frameworks on the web, making it an essential stop if you plan to play with web programming. It's not new, but it is the bricks from which much shiny new stuff is being made. Java, or rather the Java Virtual Machine, is the current "universal language." The Java Virtual Machine insures that Java code will run identically on an 80386 relic or an MVS mainframe and everything in between, including a host of smart devices that live in your home and car. Think of how you would build C/C++ for folks who you never want to bother with what's actually inside their data (you know, like BITS) and that's Java. C# on the .NET environment is similar, but much less portable. Go and Dart seem to be the contenders for a new system language to do what C once did. Dr. Dobb's Journal has some interesting articles about these. I'll skip the functional languages, except to say that if you've never played with Lisp, they will change your world. Any of them will do this, so I suggest you try any of them. It will open your mind to new ways of thinking about computation. That should do for starters :cool:
"Seize the day" - Horace "It's not what he doesn't know that scares me; it's what he knows for sure that just ain't so!" - Will Rogers, said by him about Herbert Hoover
Wow!! Thanks for your insight!! Gives much food for thought!! I guess I have three more languages to look at:Go, Dart, and Javascript... Thanks again!!
-
Through this question here, I've understood that I still have viable knowledge, albeit dusty and forgotten, and that has been a real vitamin injection!! I sort of feel I need to stop thinking about making my code really effective. I've understood that performance isn't really an issue (except for games I guess)...
Performace isn't the same issue it was 20 years ago. On your typical desktop application you've got so much more memory and processing power now that we are spending 99% of that power drawing shiny half-transparent drop-shadow thing-a-ma-widgets that you have to have or the designer prima-donnas will point to it as proof your application is obsolete. [Thank god for the UI-design-philosophy-formerly-called-Metro.] Your average compiler is better than you at optimizing, and most computation intensive algorithms are available as highly optimized routines in a library. Unfortunately that means today's developers think they don't have to worry about performance at all. Which just isn't true. You should see the !@#! that some junior programmers have written! I had one give me a module that brought my computer to it's knees as soon as I threw a medium sized quantity of data at it -- turned out he had an O(n^3) implementation of an algorithm that should have been O(n). Data is getting bigger all the time. Bandwidth is limited in the vast majority of homes and on most phones -- despite what the technological elite experience. The performance issues are high level design issues now, and your instincts from 20 years ago will server you well -- choose an efficient design, implement intelligently, and let your tools handle the rest.
-
Performace isn't the same issue it was 20 years ago. On your typical desktop application you've got so much more memory and processing power now that we are spending 99% of that power drawing shiny half-transparent drop-shadow thing-a-ma-widgets that you have to have or the designer prima-donnas will point to it as proof your application is obsolete. [Thank god for the UI-design-philosophy-formerly-called-Metro.] Your average compiler is better than you at optimizing, and most computation intensive algorithms are available as highly optimized routines in a library. Unfortunately that means today's developers think they don't have to worry about performance at all. Which just isn't true. You should see the !@#! that some junior programmers have written! I had one give me a module that brought my computer to it's knees as soon as I threw a medium sized quantity of data at it -- turned out he had an O(n^3) implementation of an algorithm that should have been O(n). Data is getting bigger all the time. Bandwidth is limited in the vast majority of homes and on most phones -- despite what the technological elite experience. The performance issues are high level design issues now, and your instincts from 20 years ago will server you well -- choose an efficient design, implement intelligently, and let your tools handle the rest.
Thanks for reaffirming my thoughts! I mean there must always be a need for neat, tidy, and efficient code! No matter the application nor environment... Makes me think back to the early 80's when my Atari 800 had 65k internal memory in total. Well I splurged and bought another module so I doubled the internal memory!! I miss programming assembler at times, but most often not!
-
Thanks for reaffirming my thoughts! I mean there must always be a need for neat, tidy, and efficient code! No matter the application nor environment... Makes me think back to the early 80's when my Atari 800 had 65k internal memory in total. Well I splurged and bought another module so I doubled the internal memory!! I miss programming assembler at times, but most often not!
My TRS-80 model I was limited to a 64k address space and the first half of it was the OS in ROM and the video address space -- leaving only 32k for user programs. I had to learn assembler to make my programs fit.. I would have loved to be able to buy more memory...