Ask Slashdot: What's New In Legacy Languages?
First time accepted submitter liquiddark writes "I was listening to a younger coworker talk to someone the other day about legacy technologies, and he mentioned .NET as a specific example. It got me thinking — what technologies are passing from the upstart and/or mainstream phases into the world of legacy technology? What tech are you working with now that you hope to retire in the next few years? What will you replace it with?"
Perl rocks (Mojolicious, AnyEvent, Moose)
I've had to add features to a classic asp web application within the last year...
I've been playing with computers since the mid-70's and one of the things that I did early on was learn to program in C.
One of the smartest things I've ever done; it's up there with my decision to start running Linux in the late 90's.
If you can program in C you can write a program that runs on pretty much everything that you'll come across that you might want to program.
Learn C if you want to learn a programming language that you can use for a very long time.
I like Android, got an Android phone and a couple of tablets, but the C NDK doesn't allow you to do things without having to jump through a bunch of Java hoops to get there. I would have more Android devices if it was easier to write a program on it in C.
["hip","hip"]
(Hip hip array!)
If you're a zombie and you know it, bite your friend!
Apparently the writer of the original article thinks "legacy" means that you have to maintain and enhance existing applications instead of developing new ones.
To me, "legacy" means that there are no new applications being developed in that language, and the only jobs available for it are maintaining and enhancing existing applications. .Net and Java are certainly not "legacy" in that sense by any stretch of the imagination.
I do not fail; I succeed at finding out what does not work.
Certainly not all of .NET -- as a whole it's anything but legacy and evolves at a fairly rapid pace -- but it also includes a lot of old cruft and a few poor design choices that affect even modern code.
Other legacy tech I'd love to get rid of: SSIS/SSRS -- terrible SQL Server drag-and-drop technologies that do a lot of stuff badly. 1D barcodes like Code 39 and Code 128 -- dead simple to implement but take up a lot of space and are prone to poor reads.
I'm mid-career, and this question feels very relevant to me. For the past 15 years or so, I've focused on cross-platform (mostly Linux) C++ programming, with a decent SQL understanding as well.
But lately, the market for straight-up C++ Linux jobs seems to be waning. For one thing, more dynamic / introspective languages such as Java, Python, Javascript, and C# seem far more prevalent than my loved/hated C++.
But a bigger trend seems to be a shift to frameworks, rather than languages + OS's, as the focus of job-posting requirements. It's no longer true that C++/Java + Linux + SQL experience lets me quickly find a well-paying job in the city of my choice. For that, one also (or instead?) needs competence in something like Hadoop, Cassandra, Ruby on Rails, Amazon Web Services, Django, etc.
This makes sense, as CPU's get faster, and as software development continues shifting to a more connected, more web-oriented world. But it's a little scary for someone like me, whose day job doesn't offer much opportunity to work with those newer frameworks in order to develop a marketable level of skill.
I'm guessing this is a periodic problem. Ace mainframe programmers found themselves less marketable when desktop development became popular. Desktop developers were partially outmoded by client/server, and have a more serious marketability problem now that most development is aimed at (ultimately) web browsers. It's not that serious C++/Linux/back-end geeks like me can't find work, it's just that I(we) feel a little trapped compared to those whose skills are currently in broader demand.
I guess the question, then, is do I(we) double-down on our current expertise and become indispensable in a small fraction of the job market, or do we accept the pros and cons of partially re-inventing our careers (and setting back our salaries) to retool?
My old abacus is giving me splinters. I asked my boss for a new one and he said "cào n zzng shíb dài". I'm not sure what that means but I'm hopeful.
Why was .Net mentioned as a legacy technology? Its actively developed, has a decent community, and is widely used - apart from some poor articles and conclusions that were jumped to here on /. There is no reason to consider .Net a legacy technology.
What is more likely is that the person was referring to projects that are stuck on specific versions in maintenance hell, which can happen with any language - Ive been stuck with VB.Net 2.0 WebForms projects, while at the same time I've been using MVC 4 and .Net 4.0. One I would consider a legacy project, the other not, but both use the same line of tech.
Jobs in C/C++ are rare these days
This is more a reflection on your lack of knowledge than the state of the software industry as a whole. C/C++ is where you make the big bucks.
"First they came for the slanderers and i said nothing."
You'll make bigger bucks in COBOL. So exactly what does $'s have to prove here, other than perhaps there are more jobs than qualified applicants?
The cesspool just got a check and balance.
I remember the days getting started in our computer reuse / recycling business, that we had to boot PCs with "Caldera DOS" and I had to reprimand people for using MS-DOS (MS was threatening a lot of piracy enforcement vs. DOS, even in 2003). The staff looked looked at me like I was the silliest man in the world.
Gently reply
It's two disjoint statements, combined by being related to C++/C.
"First they came for the slanderers and i said nothing."
Useless newbie.
I'm not sure what this post is about?
Did somebody release a CPU with some new instructions for me to use in Assember?
Sleep your way to a whiter smile...date a dentist!
You're basically acting like a parrot, quoting back rumors you've heard somewhere but you didn't bother to verify. Getting exact numbers is hard of course, but most surveys show that C/C++ are used much more than Python (for example), and sometimes are more used than Java. You really need to look things up before commenting.
The problem with garbage collection really is performance.....still. Once you have a large server with gigabytes of RAM, it can literally take 10 minutes to do garbage collection every hour or so. Companies cope with this by taking their servers offline while they are doing garbage collection (of course they have redundancy). Other companies are rewriting their Java code in C/C++. Google writes a whole lot of their code in C++ still. The reason Apple got rid of garbage collection in Objective-C is because of performance.
Now, don't get me wrong, Java isn't going anywhere, it has a place and a (very large) niche it fills really well. C/C++ have a (very large) niche as well. C# has a niche on Windows. How durable do you think that niche is?
"First they came for the slanderers and i said nothing."
I'm still waiting for FORTRAN to make a comeback. And none of this sissy FORTRAN 77 or FORTRAM 95 stuff either; real FORTRAN IV. If I wanted to program in something that looks like PL/1, I'd program in PL/1.
Cheers,
Dave
They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
Ben
With all due respect, you are pretty much talking 100% bullshit - mono is way more advanced than you suggest it is, and its a no-brainer that of course it won't run native code, but as I have yet to come across a library which is actually mixed mode that doesn't seem to be an issue.
And yet employers seem to discriminate heavily against people who have not been working with the latest version of .Net, and expect us to pass tests on the most obscure and arcane features of .Net 4.5, many of which as far as I can tell, will probably never be required in basic web solutions anyway.
Oh, and I didn't get a particular job because I didn't have SSRS experience! Laughed my arse off at that one.
If I had a DeLorean... I would probably only drive it from time to time.
When someone actually develops a replacement for C, then maybe we can talk about it going away, but so far that has not happened.
Well, the jobs numbers don't lie. The most in demand language is Java.
What jobs numbers. Link to them, show me. Prove that you can back yourself up. Show me I'm wrong if you think I am.
That will make your conversation so much more intelligent and twice as interesting.
"First they came for the slanderers and i said nothing."
Really? Sheesh. I have SSRS experience, and I'm laughing my ass off at that. "SQL wrapped in XML" is not exactly an arcane skill....
Benford's Corollary to Clarke's Law: "Any technology distinguishable from magic is insufficiently advanced."
I'm running a dotnet (stupid name impossible to use properly in a sentence) geophysics application on linux using mono. That enables it to be run on a server with a lot of memory and processing power instead of on the users desktop machines. It also means they can just log in and run it over X as if it was on their own machine instead of various RDP weirdness.
It's not of course, but a man can dream can't he? .net isn't dying by any stretch of the imagination. But let's start with languages most people would agree ARE legacy languages:
COBOL (if you can't agree on this, end of conversation)
VB6
various assembly languages (maaaaybe the 68000 family?)
FORTRAN (starting to get controversial here since I know it's still used by some crazy science people who don't want to learn anything modern)
Smalltalk
ALGOL
Forth
I was about to add Pascal... but then noticed some crazy person is still developing Pascal in the form of freaking Delphi, and even has a port for Android phone. WTF?
So that makes me think... if I can't include Pascal, or possibly even FORTRAN, languages I've never known someone to write code for in the past 15 years, but yet there's still new releases of it in legacy languages... then what can I include? I'm sure some nutter will try to argue with me that Forth is still a viable language. COBOL.... just go away.
The better question is more likely, which languages should you really not put your career prospects on? Personally I'd list any of the above languages, but sadly not yet PHP.
AccountKiller
The Game Industry is starting to use other languages
such as? XNA? lololol. Unity may be around but it is is just one of many engines that are used, all the others are still C/C++.
Garbage collection is only as good as the algorithm in place and the load it places also depends on the type of application in place. In most cases it hasn't really caused me much pain.
There are cases where Java is actually more performant than C/C++, but can get brought down by the GC. The performance gains are down to the JIT.
At work, a team that uses Java in high performance application presented to us way of analysing program performance and ways of addressing them. One of the things we were made clear about was the way you analyse performance can actually mask a performance issue, so you need to be careful of how you analyse your application.
One other thing I learnt from this presentation is about a JVM called Zing. It was amazing how much better in certain circumstances it was than the Hotspot JVM. From what I understand the improvements are very much around the JVM. The only catch is cost. They know that companies are willing to pay for the gains it gives, so you'll need to decide whether the project warrants the extra cost for the performance boost.
Jumpstart the tartan drive.
We analysed a legacy application in C# two years ago. That does not mean that C# oder .Net are legacy, but that there are software systems implemented with these technologies which are legacy and subject to modernization.
From what I see the game engines are still C/C++, but are scripted in things like Python. At the same time, using the right APIs a lot of the hard processing can be handed off to specialised hardware, such as GPU, whether for graphics or physics.
BTW while JS is not generally thought of a choice for high performance games, this demo shows what may be a sign of the future:
http://www.unrealengine.com/ht...
Jumpstart the tartan drive.
This. Yes. Thank You.
- In Soviet Korea, only old people loose all their bases to Natalie Portman's petrified hot grits overlords.
What jobs numbers
OK, let me look that up for you, hmm?
Jobstractor shows 12,558 Java jobs, as opposed to 1908 C++ jobs and 1087 C jobs. And that was in 2012. It got even more tilted in 2013. So there are over 4 Java jobs for each C/C++ job, by that accounting, and most other sources show similar results.
Or maybe you'd prefer WantedAnalytics, which analyzes tech jobs and who lists the top 5 as SQL, Javascript, java, PHP. C++ doesn't even make the list.
Every single survey I've seen in the last 3 years has had Java and web languages like PHP on top, with C/C++ fading usually into 5th or 6th place, if even that high. Web technologies and managed languages are what's important now, and this trend is only going to accelerate as mobile becomes a bigger and bigger share of the industry. I'm sorry that you're stuck in the past. I hope you manage to learn some new skills before your niche falls into insignificance.
Visual Basic, please let it be Visual Basic that's going away.
Alright, not really.
Javascript. PHP. Java and every stinking overarchitected hole of a framework built on top of it. C++ and it's various internal metalanguages. Anything which has appeared on more than 10% of the print-it-out-and-its-good-for-toilet-paper job ads on Dice. All the functional languages, which exist mostly to make people who know them feel superior. Go, because we didn't like Algol-68 the first time around.
I think we should just go back to counting on our fingers. From that first abacus, we were doomed.
Legacy properly describes a software system, not a language. Languages rise and fall in popularity. Sometimes a language has inherent limits, sometimes the implementation stinks, sometimes the syntax or paradigm no longer become fashionable. Sometimes languages and platforms disappear only to re-emerge years later. Back in the late 1990's NeXTSTEP/OPENSTEP was turning into a "legacy platform" ... yet today MacOSX and iOS rely on Objective-C and descendants of the NeXT APIs. Even if a language fades completely from the mainstream its ideas inspire new languages: Java borrowed from Objective-C and C++; Ruby borrowed from Perl, Smalltalk, and a little from Eiffel.
Stay in the industry long enough, you'll see everything come back.
C/C++ are unmanaged languages,
Which is great for very important and specific classes of problems.
so code written in them tends to be rife with security holes, buffer overruns, and memory leaks.
And a significant % of web applications written in Java, .NET or, say, Ruby, have security holes up to the wazzo.
You might not get buffer over runs, but you certainly get null pointer, illegal arguments, index out of range, and invalid state exceptions (corresponding types as per each language.)
Memory leaks? You get similar manifestations of those in managed languages (abandoned file handles, database connections that are never released). Memory specific, you can bring a VM to the ground if the creation rate of objects is so large that it causes the garbage collector to utilize CPU beyond a given threshold. In Java, for example, you can get an OutOfMemoryException if the GC is trashing the CPU even if you have plenty of memory allocated to the VM
. Anyone who works in software for a living (and that is at least decently good at it) knows these issues. Anyone else thinks these problems are exclusively the domain of unmanaged code.
Also their standard libraries are incredibly poor compared to other languages, so you have to fall back on 3rd party libraries that may or may not be available on the platform you need them on, and may or may not be maintained and supported.
A lot of times you do not require such rich language libraries in unmanaged code. If you are writing a device driver for a memory constrained platform, you wouldn't (shouldn't) be needed a, let's say, uber-rich concurrent container class with even richer iterator semantics. That is just one example.
If you are finding yourself with a significant need for a rich library, then you should be using a higher-level language.
70's style languages are going away for good reasons.
This only shows the significantly shallow view (or exposure) you have with respect of software technology. Look around you. There are more devices using unmanaged code that managed. Your toasters. Your microwaves and termostats. Your termometers. Your remote control. The cable/dsl/wireless modem that allows you to connect internet to post ignorant shit. The operating system and the myriad of hardware device drivers that make your computing experience possible.
What language do you think they are written with?
It is absolutely disturbing to see people think that unmanaged code is somehow waning away. That is where the money is. Those jobs are not decreasing. The jobs using managed code, that is the number that is increasing (and their salaries for the most part decreasing unless you are really a very good, Sr-or-Principal-level Java/.NET/Ruby/Python software engineer or architect.)
* source : 18 years of programming experience as a Java/JEE application and C/C++ systems developer in both the commercial and defense sector.
Jobs using those languages are waning.
And our jobs will go to India or China, and programs will begin to write other programs making us developers obsolete, the earth is flat and the sun orbits it, blah blah blah.
If you want to be employed in 10 years, you need to change with the times.
That is an oxymoron. Of course you have to change with the times. But changing with the times does not necessarily mean changing languages. It means evolving your skill set. You are looking at the problem of being up-to-date and marketable as if it meant one should become a language-trick pony. There are code monkeys, and there as software engineers.
Sure, there are still COBOL programmers and even well paid ones, but that doesn't mean COBOL is the language to learn if you want to do well in the industry. It's effectively a dead language even
Do the new AMD64-architecture assembly-language opcodes to do AES encryption and decryption count?
http://en.wikipedia.org/wiki/A...
http://www.intel.com/content/w...
Of course, there's also ARM. It's not new, of course, but programming ARM in assembly language is kind of a recent developmen (though I'd conservatively estimate that at least 20% of assembly-language ARM code is probably malware).
In theory, you can even do JVM assembly. It's kind of pointless and masochistic, but people have done it just to say they have. ;-)
Well, the jobs numbers don't lie. The most in demand language is Java.
And and a lot of those positions have mediocre pay and require not that much of technology depth. I know. I've worked on Java for a long time, and really, most web/enterprise stuff is really simple integration. It's barely engineering, and more plumbing.
Openings for C and C++ remain constant and will remain so simply because they cater to specific needs that won't go away with managed code.
Another thing. Look at Java job postings for the very best and brightest of companies (Adobe, Google, Apple, Lockheed Martin). Typically they desire (or even require that) people understand C and C++. Why do you think is that? I know that this is going off the tangent, but it should make you think about your claims that unmanaged code is going away.
I mean, for fucks sake, what language do you think the runtimes required for managed languages are going to be written? And if less and less people are competent in hard languages that are absolutely needed for problems that will not go away, who do you think will get paid the most.
The one thing I hate about many Java programmers (I am a Java developer btw) is that they look at technology from a lowest-common-and-dumb-denominator POV. They pigeonhole themselves into being one-trick ponies believing that such approach will provide stability in the future. This eventually shows in their quality of work and in their limited understanding of how software and hardware is supposed to work (which influences how systems are architected, designed and implemented.)
Suit yourself.
Though I'm not usually dealing with Microsoft platforms, I have enough experience with it to consider classifying it as 'legacy' in any sort of universal way an odd proposition. It is after all *the* first-party supported development framework for Microsoft platforms, very much continuing to be supported and developed by a pretty important market force (like it or not).
Of course 'Legacy' is mostly in the eye of the beholder. About the only place 'Legacy' seems to have unambiguous meaning is within a single development organization replacing/phasing out projects they control. COBOL continues to see pretty significant deployments and is actively being enhanced, though most people in the industry would consider that 'Legacy'. Similar story for Fortran. A number of languages that don't get so much 'glory' these days continue to play important roles in particular segments and continue to be developed. There are those that would consider PHP 'legacy' and others just moving onto the platform. If you try to name a platform that by popular opinion is almost certainly totally 'Legacy' you'll probably discover not only some groups doing new development in the language, but some companies or projects actually continuing to enhance the language for others. Basically, if you can remember it, it by some definition is probably still alive.
XML is like violence. If it doesn't solve the problem, use more.
No, it's arcane. You have to learn all the workarounds for the various gotchas, misfeatures and outright bad designs in SS*S. It is dark sorcery and I hate it, and having to report to the users that "no, I can't do that because SS*S is a pile of shit".
I've had similar experiences replacing Java with perl. Heck I've had similar experiences replacing compiled C code with perl. Perl has it's limitations, but it's often about picking knowing how to pick the right tool and how to use it.
As a long-time PHP dev, I recognize that it's very popular to hate on PHP, and has been for some time. And there are some valid criticisms of PHP, particularly from the domain of purity. PHP is a brutish language, with lots of warts. Whether it's the lack of any sort of parallelism or threads, or the random_underscores or the random(haystack, needle) ordering of variables in functions, there's plenty to complain about.
But PHP has its strengths, too. Its translation of strings to integers to hexidecimal numbers is "good enough" for most cases. Embedding variables into new strings works "good enough" that it's highly useful. It is extremely stable - I literally cannot remember a single incident of unexpected crashing. It's array/hash thingie is a highly convenient way to organize data from semi-sanitized sources, which is largely the norm in embedded, "enterprise" development and/or vertical stack software development.
And despite these strengths, PHP offers some interesting angles that are pragmatic (non-technical) in nature:
1) There are lots of PHP application templates and starter apps that work as a starting point for new start ups. The PHP community is generally very forgiving of newbies.
2) It's uni-thread model is simple enough for beginner/intermediate programmers to comprehend easily.
3) It's already installed on every 2-bit website hosting provider's servers.
4) You can get a tremendous amount of "real work" done with PHP. You could rather easily run a US national census by website using a small cluster of PHP servers.
Once, long ago, I was a beginner programmer, and I chose PHP for largely these reasons, reasons that have sustained me well as a developer. My company, founded on this technology, has grown rapidly and well, meeting the needs of our clients.
How can I not thank the PHP designers for the free gift that I built I career out of?
I have no problem with your religion until you decide it's reason to deprive others of the truth.
I only use one phone; why does it matter if what I write for myself only runs on the one phone I have.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I would not call it "legacy". You coworker is just a hipster.
This is more a reflection on your lack of knowledge than the state of the software industry as a whole. C/C++ is where you make the big bucks.
Yes and no, at least based on my recent job searching. Yes, the C++ jobs pay significantly more (at least where I was looking), but there are far, far more Java, .NET, PHP, and Javascript jobs. So, you'll make more money in a C++ job, if you can find one.
"The Greens lynched a hacker in Chicago. Last month, but I think the body's still hanging from the old Water Tower."
FORTRAN (starting to get controversial here since I know it's still used by some crazy science people who don't want to learn anything modern)
The latest extant standard is 2008, with the new one due out next year. Fortran 77 would count as very much legacy, but the new fortran variants seem to be decent enough modern languages.
SJW n. One who posts facts.
Exactly. Modern Fortran for many numerical applications is much better than anything else available.
And there are some valid criticisms of PHP, particularly from the domain of purity.
The major problems that most people have with PHP stem from the metric buttload of problems with SQL injection and XSS bugs that they're infested with. I know these are not the language's fault exactly, but it's usually very close to the epicenter of trouble and pain. I suspect that it's the legacy of poor community practice that's the biggest troubling thing in reality (as opposed to what people perceive), and that's very hard to fix; all those badly written applications and tutorials need work.
"Little does he know, but there is no 'I' in 'Idiot'!"
If you are finding yourself with a significant need for a rich library, then you should be using a higher-level language
Disagree. Unmanaged languages can be very well served by libraries. C++ with Boost, or Qt, spring to mind.
yes, the "level design" aspect has been done in many dynamic languages for some time now - I understand the popular one is Lua because it links to C++ very well.
You had a typo, you left off the "d" in "lived". You're right, though, only people who have some experience are likely to appreciate how horrible Java really is.
C/C++ are unmanaged languages, so code written in them tends to be rife with security holes, buffer overruns, and memory leaks.
... when written by Java weenies who don't know how to program without a garbage collector.
I am becoming gerund, destroyer of verbs.
Shame about the global scoping and 1-based arrays.
I am becoming gerund, destroyer of verbs.
You know, some people still have to write real applications.
.NET application in 2002, and it's still running without issue today. If it only ran in a browser it would have been scrapped long ago.
.NET is alive and well, and business for desktop apps is picking up.
There's a whole crop of big internal LOB web applications that are showing serious aging problems since they only work with older browser types. As they're being chucked at great cost, it's been getting easier and easier to convince people that desktop apps are better - you get a higher quality, more stable UI, and they don't just randomly break with browser upgrades.
I wrote a fairly large (100KLOC+) LOB
Just something to consider:
Positions in which you are expected to be using C / C++ are usually senior positions with other responsibilities as well (although this does depend a bit upon what you are actually doing, C and C++ are used across more industries than most languages.)
Usually you fill that kind of position through your network of business contacts, or with someone internal who is working on something else, but you think can handle it. I would consider it a bad idea to fill it from random job boards.
I'm a signature virus. Please copy me to your signature so I can replicate.
This person gets it.
Back in the early 1990s we wrote some software in Borland C++ to run under Windows 95 on an industrial PC to do some measurements and transfer data via an RS232 link and installed these boxes at various transformer stations at a utility. We've managed to "update" the setup to run under Windows XP but the utility didn't want too many changes for new installations so it was still compiled under a late 1990s version of the Borland C++. It is fortunate that we also bought the source code for the Borland RS232 driver as that company went out of business long ago. National Instruments provides "legacy" drivers for their A/D cards so we can still purchase those, too. Now that all of us have retired or left the company I guess the whole system is now legacy though these installation are still operating as far as I know.
Though I remember the parts of the software I wrote fairly well it takes quite an effort to build, install and test its operation using the legacy compiler and drivers.
The OP said c/c++ jobs are 'rare'
"First they came for the slanderers and i said nothing."
Hah! Great link - led me here: http://en.wikipedia.org/wiki/B...
Cool, glad you found something
"First they came for the slanderers and i said nothing."
Not even a chuckle - I still make my living supporting both VFP and FP-DOS systems.
I dup programming-language Forth loved! anything with-it could-do.
- For the complete works of Shakespeare: cat
I wonder how much manpower is still spent maintaining and writing FORTRAN? Oh, I know that in fortran 90 there are structures and classes with methods, but think for a moment about all that legacy code still running out there, not to mention that many scientists still like Fortran for calculations. Maybe lots of scientists have migrated to Matlab but they need to turn to Fortran to unlock some of their old data.
Besides, most large fast stock exchanges are written in Java, they have extreme performance.
I would LOVE to see your reference for that, actually.
In java you do that by preallocating objects, and reuse them all the time.
That's a real way of doing it, but it kind of ruins the point of having garbage collection in the first place. I knew a guy who got around the array performance penalty by writing a pre-processor that turned his array into variables (v1, v2, v3, v4, v5, v6). It was really cool, but...........if you need to do that kind of workaround, it's a problem with your language.
"First they came for the slanderers and i said nothing."
Not that I disagree, I have to use SSRS here and detest it. But is there any reporting solution out there (that also supports emailed subscriptions like SSRS does) that doesn't actually suck?
The two biggest issues I have with SSRS: (1) as a report writer if I want to support a particular output file format correctly (even "basic" CSV files that support field data with double-quote characters or line breaks) I have to write my own Renderer objects and (2) as a DBA it utterly shits me that SSRS fills up the SQL Agent jobs list with GUID-named jobs for its report subscriptions.
God, I know. Suddenly Python is as hip as hip gets. All the cool kids using it. They even use it to write ridiculously large systems like OpenStack. Good fucking luck with that. If you employ 50+ hipsters to support it I'm sure you can do great...
^ +1
I don't quite understand the popularity of Python. It's ok as a scripting language, but there are plenty of other good scripting languages.
"First they came for the slanderers and i said nothing."
"And yet employers seem to discriminate heavily against people who have not been working with the latest version of .Net, and expect us to pass tests on the most obscure and arcane features of .Net 4.5, many of which as far as I can tell, will probably never be required in basic web solutions anyway."
Personally I learn all the new features of new versions of .NET even if they will actually never be useful. Why? So that I do know whether they'll be useful or not rather than complaining I didn't get a job for not knowing about something with a throwaway comment such as "It's probably not useful anyway" - how could you know? you don't even know what it is.
Interview questions like that are there to check for one thing - whether you're one of those best of best developers that does know the language inside out. If you can't answer it you're telling the employer "I don't actually give a shit about programming enough to care about that thing".
Most programming can do pretty much everything you want at a very basic level with only the most simple constructs. 90% of new features in languages nowadays are there to help you write faster code, more secure code, or more concise and readable code or some combination of those sorts of traits - if you're not learning these features then of course you can program most things with the language, but you're not making the most of the language and so your code will take you longer to write, be less secure, or be less performant or similar. This is true not just of .NET but many other languages like Java, and C++.
It's not as though language release notes and feature lists are particularly long. You could get a firm idea of what's in a version update like .NET 4.5 in about 30 minutes. Asking someone a question on the most recent language features simply just helps employers select those who want an easy ride and aren't interested in self-learning from those who know the technology inside out and understand the direction it's heading in. .NET 4.5 adds in some pretty decent features for automating parallelisation of many tasks. It's possible they were simply probing to see whether you'd just use the classic programming constructs to write a single threaded solution to something that could be handled in a more parallel manner automatically, and with less code. This is pretty common in interviews by employers who know their shit and want people who also know their shit - it weeds out the people who want to do things the way they've always done them, even if that way no longer holds any real advantages.
Don't assume that because you didn't get a job that you didn't need what they were asking for and that they're stupid. Yes this is true sometimes, but often just be humble and accept that maybe you didn't actually know the things they needed you to know for the job or for the level of ability they're seeking.
"C/C++ is where you make the big bucks."
This is true, but does that somehow change the rarity of them though? I've found C/C++ jobs tend to be highly regional - there are plenty in places like London and Cambridge, but barely any in much of the rest of the UK for example.
> Java is definitely the preferred language over those for reliability, uptime, performance, security, and manageability and maintainability of the source code.
I would have believed you if you didn't say performance and security. Since you claimed Java has great performance and security I kow you're just trolling. :)
Somehow I haven't seen anyone mention that .NET is actually newer than Ruby or JavaScript (the basis of node.js) and it is still developing rapidly, so I'm not sure what the criteria are for "Legacy".
I worked at a Ruby on Rails shop, and most of the twenty-something fanboys didn't understand language design or design patterns in general well enough to have a well defended opinion as to why Ruby on Rails was the right choice, they liked it because it was Ruby on Rails and that's what the cool kids use. It's performance is abysmal and it encourages terribly structured code. Language choices made "because it's cool" will quickly be replaced by the next buzzword. On the other hand, 40 years later, C/C++ are still widely used for performance critical applications at companies both stodgy (finance) and cutting edge (back-ends for tons of web companies).
Once uppon a time, I enjoyed VB6. Then it went away, and I learned not to thrust a single vendor for providing me with a compiler...
The question is not what language you use, but do you know more than one? If you only have learned one language you are limited, both in your capabilities and in your way of thinking. It is known that languages effect the modes of thinking that people use. If you have not learned other languages you might not be -able- to think in other ways.
Applies to spoken languages as well...
Why did Stroustrup claim it was inevitable that C++ would soon support garbage collection?
Would you call him misguided, out of touch with the performance issues you mentioned, or making an (unfortunate) that he wasn't excited about?
I'm not asking rhetorically btw. You seem to be a couple steps ahead of me.
The security of a web app (ie, running inside a container) is relatively secure. The "insecurity" attributed to Java is almost entirely browser plugin based, at least for the past few versions I ran through the last time someone made this claim. I personally would never write an applet, at least not using Java. I'd go for an application, in which case you're back to relatively secure. Now if you download a trojan, there's no helping that.
As for performance, I thought this one had finally been put to bed with results like these and many others. Yes, C/C++ can be fast. Yes, Java can also be fast. They all can be dog slow too.
The cesspool just got a check and balance.
Ibm used to say for a time that REXX was the most used language in the world.
I'm not asking rhetorically btw. You seem to be a couple steps ahead of me.
I don't know about that, but......IMO: :)
I would call Stroustrup misguided for a lot of reasons.
More seriously though, the design philosophy of C++ has always been, "if there is a language feature people want, make it available." I don't claim to read Stroustrup's mind, but adding garbage collection fits that design philosophy.
The other design philosophy of C++ is to try to make it fast. So most likely garbage collection in C++ will be an optional feature, that can be turned on or off. There is already a garbage collector like that available with GCC. Or possibly they will learn from Apple's experience, and make something like ARC, which is not exactly garbage collection, but still takes care of 99.99% of your memory issues. This article goes in depth on some of these issues, although it's looking at it from a mobile standpoint, not a server standpoint. I believe that story was covered on Slashdot, too.
Incidentally, I can't find any reference to where Stroustrup says garbage collection is inevitable. This seems to be his official position.
"First they came for the slanderers and i said nothing."
Thanks for the background on that. I'll have to read up on some of that.
.NET (which is terrible, btw: worst of both worlds) has optional support for garbage collection, so ISO/GNU C++ might move that way as well.
C++ in
Of course. Performance issues are often a matter of using a more efficient algorithm rather than a more efficient language. But in my experience, Java has the superior ecosystem when it comes to correct and performant packages most of the time.