If you can read this, either the style sheet didn't load or you have an older browser that doesn't support style sheets. Try clearing your browser cache and refreshing the page.

(IT World)   New study finds older programmers know more than younger ones, and also take more naps   (itworld.com) divider line 163
    More: Interesting, regression, software engineers, new technologies, Windows Phone 7  
•       •       •

1941 clicks; posted to Geek » on 30 Apr 2013 at 3:36 PM (1 year ago)   |  Favorite    |   share:  Share on Twitter share via Email Share on Facebook   more»



163 Comments   (+0 »)
   
View Voting Results: Smartest and Funniest

Archived thread

First | « | 1 | 2 | 3 | 4 | » | Last | Show all
 
2013-04-30 07:12:32 PM  

UberDave: It depends on if they kept up their skills and programmed new things but generally, yeah.  I think a lot of older programmers realize (through experience or whatever) that a significant portion of real world coding is knowing how the business works (I think I mentioned this in another thread not too long ago).

Right after graduating college, I could white-board a recursive loader for a b-tree upon being asked.  Now, not so much.  But you want me to code an automated interface that picks up data from 10 different XML files where all the elements are strings (even the dates) and place this information in an Oracle 11g database after transforming appropriately including decrypting PII data and have it run on a user settable schedule and have it log success and failures and e-mail failure summaries and have it done quickly and correctly with the ability to deal with inevitable specification changes...No problem.


eh... you young whipper snapper... back in my day we had to use punch cards uphill, BOTH ways in the snow, and we liked it.
 
2013-04-30 07:12:35 PM  
t3knomanser:
rmcooper4: Any recommendations on how to approach learning how to code or develop (I guess those aren't the same things) and perhaps what to take under consideration when choosing a language(s)?

Start with a problem that you want to solve. Make it a small problem, but have something that's got a clear goal. Other people have almost certainly already solved this problem, but that's okay- you're going to go out and rip them off shamelessly, and then put together your own take on that solution.

So you know what you want to try and do, and you know how other people have done the same thing. How do you want to do it yourself; which language do you want to use? Look at what they did. It worked for them. Imitate. Until you've played around with a few programming languages, you aren't going to have enough experience to know which one is the right tool for which jobs.


Good advice. As a 40-something just learning to code (python, haven't touched code saince BASIC in the late '80s), that's basically how I'm looking at the problems I'm being given now. My head kinda wants to explode at times, but I'm slowly figuring things out.
 
2013-04-30 07:21:44 PM  

rmcooper4: Seems there are some experts here. I'm a geographer who got into GIS during college and somehow missed (read: met a girl and got distracted) the transition to mapping becoming largely an online affair.

I'm really excited by all the cool things that can be done by knowing how to write even just a few lines of code, but I'm so overwhelmed by the options out there. Every language is a shiny object capturing my attention. Any recommendations on how to approach learning how to code or develop (I guess those aren't the same things) and perhaps what to take under consideration when choosing a language(s)?

/n00b


Depends what your trying to do. Learning java/XML to program android apps seems like it would be a pretty good way to get into programming in general. Check out Google's dev site, you can get eclipse for free and start playing around with drag and drop GUI stuff pretty fast. There's lots of online resources for learning java as well. And plenty of noobs asking stupid questions about their slightly modified auto generated java code on forums like the one the one from tfa.

As to the article my own experience is mixed, there are shiatty older programmers and shiatty young ones. The shiatty old ones tend to be worse because they're wrapping uint bad at programming but still "contributing" to the project because they're good at bs. The young are just ignorant and/or lazy, more easily neutralized.
 
2013-04-30 07:29:32 PM  

Raystorm: Whats the word on office plugins? (I forget the official term). I'm also enforcing document print/save rules to make sure proper logging is maintained and the populated documents cannot be saved.


I question whether you're actually enforcing the rules you think you are, or if you're just disabling menu options (which is a surprisingly common abuse case in Office automation). Office has a DRM system which lets you apply those kinds of rules via keys and domain policies. I don't know too much about how it works.
 
2013-04-30 08:06:06 PM  
TyrantII: Programming has be iterational. Old programmers that don't constantly update their skills and education become managers

Fixed

// wish I was kidding
 
2013-04-30 08:14:32 PM  

t3knomanser: Every solution I've suggested involves the user doing the onerous task of opening a spreadsheet.


I've never intended to say your solution was wrong.  I'm trying to say that there a few ways to solve them that would be the method suggested by the young developer who only focused on interop being teh evel but suggested something equally foul.

That said, your solution has one major potential issue.  Some environments require all add-ons, plug-ins, extensions and tools be approved.  If you work in a group that has fairly close/ready relationship with the groups that approves what is approved then you could probably get this approved fairly quickly.  If you are in a group that is far removed you can expect to wait a long time or find another method.  Interop is not the only tool that can do it but might be the only one approved.  Some time it is a matter of the only tool not the best tool.

/I still hate interop.
 
2013-04-30 08:17:20 PM  

t3knomanser: DerAppie: Java, everyone loves Java.

You're mean.


And either a liar or very miss-informed. :-D
 
2013-04-30 08:29:06 PM  

natmar_76: It's a youth-centric field because employers want to pay less and get more.

This study is in the "no ****, sherlock" realm.


And work 80 hours weeks. Plus, be on call.

Once you've learned 15-20 languages, operating systems and a few hundred piles of hardware, doing something new is easy. The basics never change, be it "top-down", pseudocode, structured programming, or OOPs.
 
2013-04-30 08:31:44 PM  
Unless you're Phil Katz, in which case you just enter a series of recursive loops of hookers and schnapps until your organs fail.
 
2013-04-30 08:34:14 PM  

t3knomanser: Raystorm: How then, oh "fark" experts would you suggest I populate word templates, that have to conform to national standards?

OpenXML SDK, as I said. That's the official way to do it from Microsoft. Interop is fragile, and requires Office installed on whatever machine is generating the output. OpenXML SDK is an API for working with the files directly. There are a bunch of 3rd party libraries that sit on top of it so that it's easier to work with the files.


Despite what may look like a argument between us in the thread (it's not intended to be on my part) if you can choose the tool t3knomanser is right on the mark.

And I'd add that the support hell he's talking to really starts showing more and more the longer the application has been in use.  There is nothing like having an application fail on 40% of the target PC's because they got the roll out of the new version of office before everyone else.

I'm facing a similar (and to my mind far worse) issues right now as the place I'm working is about to roll out Windows 7 (finally) and beyond the interop joy (which abounds) but they also have a ton of late binding to everything from terminals apps for screen scraping (an evil that, while currently necessary here, is a whole different nightmare) to calling shared common task controllers.  There are about 50 apps that could be affected and of course not a lick of documentation.

/Incidentally I'm the first experienced developer they've hired in the five years this group has existed, largely to help make sense of the mess.
// They liked them cheap, fresh and fast.
/// They have learned that cheap is a relative term in the long run.
 
2013-04-30 08:52:15 PM  

fst_creeper: (it's not intended to be on my part)


Yeah, I don't think we disagree, directly. It's just nerdfight bullshiat.

I work in corporate IT. We're a cost center which bills back to the business units, and we're expensive. Not as expensive as a quality outside vendor, but way more expensive than a cheap-ass outside vendor. But even that's way more expensive than Steve, down in receiving, who went to a class and learned to make Access Macros.

So Steve builds this shiatty little Access DB, puts it on a network share, and three weeks later, it's OMG!!1!MISSION CRITICAL. Six months later, when they discover, "shiat, Steve is spending 50 hours a week keeping this running, and his actual job isn't getting done," they go, "Hey, corporate IT, can you own this? It's an IT asset, right?"

And- now this is the best part- we get to say, "No. Hell no. We'd be more than happy to help you build this into a  real application, but we won't support your Access bullshiat."

A few years ago, it used to get bounced up to upper management who would make an exception, "just this once", but no more! Life is kinda cool sometimes.
 
2013-04-30 08:59:12 PM  

rmcooper4: Seems there are some experts here. I'm a geographer who got into GIS during college and somehow missed (read: met a girl and got distracted) the transition to mapping becoming largely an online affair.

I'm really excited by all the cool things that can be done by knowing how to write even just a few lines of code, but I'm so overwhelmed by the options out there. Every language is a shiny object capturing my attention. Any recommendations on how to approach learning how to code or develop (I guess those aren't the same things) and perhaps what to take under consideration when choosing a language(s)?

/n00b


So I've written some other walls of text on similar subjects:  http://www.fark.com/comments/7621995/82827357#c82827357

Pretty much everything everyone else has said.  Pick small solved problem, fix it.

The main things to take into consideration when picking a language are the quality of the API's and docs for what you want to do.  You can technically do pretty much anything in Erlang, but since no one writes Erlang libraries, expect to write everything from scratch.  You're much better off using that really nice python library in Python.

/Also, personally, if you've never coded before, start with C.  Don't stick with it for more than a couple weeks, but C is this really simple subset of the tools that programmers have for beginners (plus you'll learn what pointers are and how memory allocation works, which is really, really nice to know).  Pick up a copy of Kernigan and Ritchie, and spend a couple weeks learning what a function is before you pop up and have to figure out what template metaprogramming or virtual inheritance or decorators are.
//My personal guess is that you'll end up in either Ruby or Python if you don't care about performance or C++ if you do.  (Or possibly .NET if you don't mind being tied to Windows)
 
2013-04-30 09:55:37 PM  

meyerkev: GiantRex: Speaking as a young programmer,
[www.librarified.net image 250x250]

This.  I almost wish I was in a big shop where my WTF's (because I have no clue how it's supposed to be done and my WTF's do work despite being total WTF's) would get caught by some old dude, they'd whack me upside the head and show me what X is supposed to be for, and what the proper way of doing Y and Z in the language is.

ikanreed: If you want awesome young language power, it's all in the python.

Or the Ruby.  Man, do I love the Ruby.  Pity I'm the only one at my company who uses it on a day to day basis (We're using Chef-solo to automate a lot of setup for our C++/Python app).

/Python and Ruby with a very tiny little bit of bash, and for some reason JS.


I can't see Python and Ruby programmers as anything other than hipsters, trying to use the new paradigm before it's cool. I've worked with both Ruby in academia and Python professionally and it's clear that they would suck for anything beyond utility scripts and trivial websites.

Python has a habit of making the same code mean different things in different contexts (and you can only suggest to other programmers that they don't access your 'private' members) this makes the true modularisation close to impossible.

My Ruby experience is limited to Rails and i totally loathe that framework. Sure it's easy to do the basics but if you want to do anything more you find yourself fighting against it.

/JS is a necessary evil until we get a proper VM for a bytecode-compiled strongly-typed object-oriented language built into browsers.
 
2013-04-30 09:56:32 PM  

t3knomanser: fst_creeper: The right answer was not to have the user jump through 3 hoops to get a file.

Every solution I've suggested involves the user doing the onerous task of opening a spreadsheet.

rmcooper4: Any recommendations on how to approach learning how to code or develop (I guess those aren't the same things) and perhaps what to take under consideration when choosing a language(s)?

Start with a problem that you want to solve. Make it a small problem, but have something that's got a clear goal. Other people have almost certainly already solved this problem, but that's okay- you're going to go out and rip them off shamelessly, and then put together your own take on that solution.

So you know what you want to try and do, and you know how other people have done the same thing. How do you want to do it yourself; which language do you want to use? Look at what they did. It worked for them. Imitate. Until you've played around with a few programming languages, you aren't going to have enough experience to know which one is the right tool for which jobs.


I started with Z80 assembly language, because that's what the job required.  I was about 17 or 18 and still in high school at the time.  Since then I've learned more languages, tools and devices - some from job requirements and others because I find it interesting.  That last is probably the most important thing, IMO, in keeping up.  Applies to any career, I suppose.

In the meantime, I've slacked off some from the bleeding edge, raising two kids can do that, but I'm still curious and interesting in hardware and software of all types, so I (hope I) am still moving forward.

Given that I'm not completely inactive and have nearly 30 years on a lot of you...

Thphtttttttttt!
 
2013-04-30 09:59:27 PM  
ParanoidAgnostic:

Python has a habit of making the same code mean different things in different contexts (and you can only suggest to other programmers that they don't access your 'private' members) this makes the true modularisation required for large projects close to impossible.

FTFM

Forgot what I was saying halfway though my sentence
 
2013-04-30 09:59:36 PM  
/forgot the lessons of:

1 - don't post tired or drunk
2 - PREVIEW

//feels old
///wears steel-toed boots, you young SQLsnappers
 
2013-04-30 10:15:58 PM  

fst_creeper: t3knomanser: DerAppie: Java, everyone loves Java.

You're mean.

And either a liar or very miss-informed. :-D


Java isn't that bad. It got a bad name early on because it was used for applets (which fortunately have almost completely disappeared from the web). I've only used it briefly in a professional context (that was a nightmare but that was due to the fact it was a web application and the previous developer had no concept of object oriented coding, not any failing of the language). But I have worked and continue to work with it extensively for academic purposes. Almost my entire degree used Java (2 units used C, one Ruby and another Matlab) and I'm doing some post-grad research part-time using it now.

My only real gripe with it is that its philosophical purity frequently gets in the way of clean code. I'm constantly annoyed by the lack of operator overloading, delegates and properties.

/I work in C#. Which is a blatant rip-off of Java, except that Microsoft doesn't care about philosophical purity and provides all of these lovely features.
/Never ever use Java for a web-application. The frameworks are horrible to work with and poorly documented and the webservers are a nightmare to set up.
 
2013-04-30 10:52:06 PM  

ParanoidAgnostic: meyerkev: GiantRex: Speaking as a young programmer,
[www.librarified.net image 250x250]

This.  I almost wish I was in a big shop where my WTF's (because I have no clue how it's supposed to be done and my WTF's do work despite being total WTF's) would get caught by some old dude, they'd whack me upside the head and show me what X is supposed to be for, and what the proper way of doing Y and Z in the language is.

ikanreed: If you want awesome young language power, it's all in the python.

Or the Ruby.  Man, do I love the Ruby.  Pity I'm the only one at my company who uses it on a day to day basis (We're using Chef-solo to automate a lot of setup for our C++/Python app).

/Python and Ruby with a very tiny little bit of bash, and for some reason JS.

I can't see Python and Ruby programmers as anything other than hipsters, trying to use the new paradigm before it's cool. I've worked with both Ruby in academia and Python professionally and it's clear that they would suck for anything beyond utility scripts and trivial websites.

Python has a habit of making the same code mean different things in different contexts (and you can only suggest to other programmers that they don't access your 'private' members) this makes the true modularisation close to impossible.

My Ruby experience is limited to Rails and i totally loathe that framework. Sure it's easy to do the basics but if you want to do anything more you find yourself fighting against it.

/JS is a necessary evil until we get a proper VM for a bytecode-compiled strongly-typed object-oriented language built into browsers.


Python and Ruby are both wonderful IF AND ONLY IF you trust your programmers.  They're pretty much the only generic strongly dynamically typed languages that I've seen with widespread use.

My impressions of languages I've worked with:
C- Wonderful little teaching low level language.  It's also used by all my CE brethren working on low level embedded systems and drivers for EVERYTHING, so there's a certain amount of respect for it in my book.
C++ - C for actual projects.  If you need the performance and low-level-ness of C, and the crazy stuff that object-oriented lets you do, this is your language.
Java - "Pure" C++.  The pureness kills all your flexibility (plus as mentioned, Java web servers SUCK), though the JVM and garbage collector help resolve some of the WTF's of C++.
.NET - unpure Java.  This lets it be awesome, though because I'm mainly a UNIX guy, I've written less than 100 lines of .NET, all in interviews.

Python/Ruby - Strongly dynamically typed languages.  I moderately like Ruby's fat interface philosophy over Python's thin interface philosophy (Look at Python's list interface vs. Ruby's Array interface), because I don't have to write all that extra code myself, but neither of them are bad (though as mentioned, scaling is difficult)  Personally, I love the flexibility.  Is there any other strongly typed language that lets you create a totally type-insensitive list/map and treat functions as first class objects that doesn't have the same problems as Python and Ruby?
Rails - Works well IF you're using the database-backed framework that it's expecting, and IF you're able to get someone who knows what they're doing to do the initial setup for you.   I had a very good time extending an existing app.  I would never want to make a new one.

Javascript (and I'm going to throw HTML/CSS into one big pile with this) - *quietly weeps in corner* I just don't do enough of this to know whether or not it sucks.  I know that I had all sorts of problems with it because I had no idea what I was doing.
PHP - *bawls in corner*.  Impossible to debug, and pretty much the messed-up toolkit of the coding world.

/I also did some Verilog, which was this similar to C language for programming hardware in the default CE class.
 
2013-04-30 10:53:22 PM  

meyerkev: .NET - unpure Java.  This lets it be awesome, though because I'm mainly a UNIX guy, I've written less than 100 lines of .NET, all in interviews.


I lie.  I wrote about 1000 lines at my Microsoft internship doing a small windows phone app and creating some unit tests.  Totally forgot about that.
 
2013-04-30 11:07:18 PM  
meyerkev:

Python and Ruby are both wonderful IF AND ONLY IF you trust your programmers.  They're pretty much the only generic strongly dynamically typed languages that I've seen with widespread use.

We use Python for a lot of scripts, deploying new versions of the code, running automated tests etc. Having multiple coders work on a file is a nightmare, largely because of its whitespace sensitivity. It plays nice when everyone uses tabs to indent or everyone has their test editor set up to replace tabs with the same number of spaces but god help you if anyone doesn't.

I'm a little biased though. My first real language (Basic and Logo don't count) was C++ and I'll never be comfortable without braces and semicolons. Whitespace is for human readability not for the compiler.
 
2013-04-30 11:10:12 PM  

Raystorm: I see lots of "Interop is evil". and talk about other file formats for Excel.
How then, oh "fark" experts would you suggest I populate word templates, that have to conform to national standards?  I use interop, and it works.  At the time I hated it.  Also the word templates themselves are maintained by a different employee.


There's an open source .NET solution out there that I've read about, downloaded, but haven't implemented called DocX (http://docx.codeplex.com/ ) that looks promising for just this.  My company's flagship product gives the option of MS Word or CR reports.  Some of these reports are government (NRC and DOE).  The MS tools for accessing office documents just suck - when the user upgrades or downloads the right MS update on their workstations, templates all of a sudden stop working and you have to code around the damn problem (or worse, have the client roll back their update).  We're in the process of coding a new version in C#.  DocX should work for MS Word templates using simple tags (find and replace operations).  As for the CR, I'm probably going to use .NET forms because the viewer is better than the CR viewer which seems to load farking slow in WPF MVVM apps the *first* time it opens.  And I'm certainly going to add the option to dump custom XML reports which will allow the client to do pretty much anything they like to make it "fancy".
 
2013-04-30 11:17:15 PM  

fst_creeper: Young Developer:  "That's stupid, this is cross platform, Micro$oft is teh evel, the user is dumb and lazy"


FML, I run into this at my current job. Went from a .NET shop to my current company that uses Coldfusion. It's not even relegated to .NET, most developers who automatically discount anything having to do with MS because "M$ IS THE DEVALS!!!", despite the fact 99% of our customers are using Windows, 70+% are still using IE, and just about all of them use Office.

I personally prefer .NET, at least for web form apps, only cause it's already got a shiatload of classes that can do all that tedious BS work, like setup a web form or an Ajax call. Coldfusion would be better if it was an actual OO platform, instead of this crazy psuedo-OO language. Obviously the cost is a factor, but I like to think of the time saved by using the control classes already defined in ASP. Makes getting things up and running much easier.

/Java is fine, as long you aren't doing applets.
 
2013-04-30 11:18:16 PM  

meyerkev: PHP - *bawls in corner*.  Impossible to debug, and pretty much the messed-up toolkit of the coding world.


I've never had an opportunity to work extensively with PHP but what I've seen of it I liked. The code looks very C-like (braces and semicolons everywhere - Yay!). The little I have done with it went very smoothly. The language is structured enough to let you write clean, maintainable code but other than that, it just gets out of your way. I found with Ruby on Rails that I needed to keep looking up what the conventions  were and then fight against them to achieve goals which seemed obvious to me but apparently the framework designer never considered. In PHP I built my own restful MVC framework in less than a day and could then just get on with it.

You also forgot Perl on your list. I've heard itdescried as write-only code and I can't think of a better summary.
 
2013-04-30 11:23:07 PM  

meyerkev: Javascript (and I'm going to throw HTML/CSS into one big pile with this) - *quietly weeps in corner* I just don't do enough of this to know whether or not it sucks.  I know that I had all sorts of problems with it because I had no idea what I was doing.


JS is much better than it used to, especially since the engines in modern browsers are faster and better at garbage collection. The problem with Javascript is that you aren't dealing with true objects, so understanding scoping and closures can be confusing.

We do a lot of stuff client-side and JS is pretty much the only way, aside from applets (ugh). Just got to watch what your doing and ensure you aren't exposing any potential security weaknesses. Oh and use jQuery. We only use straight JS when we absolutely have to. For any DOM stuff, jQuery all the way. Makes things so much easier.
 
2013-04-30 11:25:45 PM  

ParanoidAgnostic: meyerkev: PHP - *bawls in corner*.  Impossible to debug, and pretty much the messed-up toolkit of the coding world.

I've never had an opportunity to work extensively with PHP but what I've seen of it I liked. The code looks very C-like (braces and semicolons everywhere - Yay!). The little I have done with it went very smoothly. The language is structured enough to let you write clean, maintainable code but other than that, it just gets out of your way. I found with Ruby on Rails that I needed to keep looking up what the conventions  were and then fight against them to achieve goals which seemed obvious to me but apparently the framework designer never considered. In PHP I built my own restful MVC framework in less than a day and could then just get on with it.

You also forgot Perl on your list. I've heard itdescried as write-only code and I can't think of a better summary.


PHP is exactly what he said. It's not as much of a language as it is a bunch of cobbled-together functions. The syntax is C-like but there are *just* enough differences to get you into trouble, and as he said, there's no way to debug. From what I've seen of it (so far), I like ASP.NET better, if for no other reason than it just fits together better.

I took a database class this semester, and it was with Postgres and PHP. About 25% of my time was dedicated to figuring out how databases work; the other 75% went to fixing farked-up web pages that interfaced WITH the database, since I had no experience with PHP at the time. It gets the job done but has a horrifically steep learning curve and few ways to learn on your own.
 
2013-04-30 11:26:49 PM  

Jon iz teh kewl: i don't think they eat enough CHEESE WHIZ.  they should have a philly steak meal kit at every workstation!


The thought of cheez whiz on a Philly just made me throw up a little. Two points to you, sir.
 
2013-04-30 11:34:02 PM  

fst_creeper: Sometimes it is not that we don't have a handle on it but we've seen the other side of the coin. Loosely typed languages in particular can be a boon to the developer but a real pain for long term data integrity, especially coupled with a young developer willing to take shortcuts because they fail to see long term shortcomings of their methods. I can always tell a database that was fed by a loosely typed database pretty much at a glance. Migrating them is always a hoot


Tools are tools. If you don't take the time to understand the tool, then you end up hating it and declaring it useless. Your bias sets in. Next time you see something broken, like bad data in the database, you assume that tool was used. You sound exactly like what I'm referring to. The paradigm was introduced. You tried it but didn't understand it and declared it to be useless.

I can write code in an interpreted languages where I have a fairly firm grasp on how much memory is in use and what the types are of each variable. I know how to trigger garbage collection and make sure memory usage doesn't balloon. I know how to cast data types as necessary, round floats for display as currency, make sense of what a cast to a boolean is going to do, and use === instead of ==. I also mainly write web pages where my scripts begin and end in the blink of an eye vs. a program that runs for longer periods, staying in memory while the user interacts, and the implications of each.

I've seen code written by people with a slightly different different backgrounds that understand none of this. It looks like they tried to beat a screw into a board with the butt-end of the screwdriver because they only knew how to use hammers. Those people are often one ones that decide the tool sucks. But tools are just tools.

My concession, though, is afraid it'll happen to me.

mcreadyblue: The NoSQL movement seems to be warping people's consciousness.


Good God I hope not.

UberDave: I think as long as you keep up with the latest technology and have a willingness to leave your comfort zone, you will be fine.


Good God I hope so.
 
2013-04-30 11:36:10 PM  

YodaBlues: meyerkev: Javascript (and I'm going to throw HTML/CSS into one big pile with this) - *quietly weeps in corner* I just don't do enough of this to know whether or not it sucks.  I know that I had all sorts of problems with it because I had no idea what I was doing.

JS is much better than it used to, especially since the engines in modern browsers are faster and better at garbage collection. The problem with Javascript is that you aren't dealing with true objects, so understanding scoping and closures can be confusing.


The lack of support for modularity is painful. A function defined in one part of your code can easily be replaced by an integer in another part. There will be no warnings until a few hundred lines later when you try to pass parameters to an integer.

Also, the fact that libraries have to be referenced in the html rather than the js which uses them is just awful. I know there are a few frameworks which exist which allow import-like statements in js but they are hacky and rely on exec(). It should be a standard language feature.
 
2013-04-30 11:39:38 PM  

YodaBlues: JS is much better than it used to, especially since the engines in modern browsers are faster and better at garbage collection. The problem with Javascript is that you aren't dealing with true objects, so understanding scoping and closures can be confusing.

We do a lot of stuff client-side and JS is pretty much the only way, aside from applets (ugh). Just got to watch what your doing and ensure you aren't exposing any potential security weaknesses. Oh and use jQuery. We only use straight JS when we absolutely have to. For any DOM stuff, jQuery all the way. Makes things so much easier.


I don't know what you mean by "not...true objects", except that Javascript objects come from a prototype and not a class definition. Now that's a concept that's hard to get your head around. And honestly, for the average person adding a script to a webpage it's not that big of a deal. But if you're writing a heavy application it's essential to understand. I swear when I finally got my head around how prototype chains actually work, it was like reaching a level of enlightenment. It's definitely a concept I've never seen anywhere else.
 
2013-04-30 11:45:33 PM  

ParanoidAgnostic: The lack of support for modularity is painful. A function defined in one part of your code can easily be replaced by an integer in another part. There will be no warnings until a few hundred lines later when you try to pass parameters to an integer.

Also, the fact that libraries have to be referenced in the html rather than the js which uses them is just awful. I know there are a few frameworks which exist which allow import-like statements in js but they are hacky and rely on exec(). It should be a standard language feature.


Agreed. For someone versed in OO programming to try to wrap your head about JS, it can be friggin frustrating. Luckily dev tools have gotten better (Love you Chrome Tools), so inspecting code is not as pain-inducing as it used to be.

jonny_q: I don't know what you mean by "not...true objects", except that Javascript objects come from a prototype and not a class definition.


That's pretty much what I meant. It's not like C# or C++ where you define a class and all it's members and you don't declare variable access via keywords (private, public etc), instead you have to use closures and scoping. It definitely can throw someone off who hasn't done a lot with it.
 
2013-04-30 11:47:19 PM  

jonny_q: I don't know what you mean by "not...true objects", except that Javascript objects come from a prototype and not a class definition. Now that's a concept that's hard to get your head around. And honestly, for the average person adding a script to a webpage it's not that big of a deal. But if you're writing a heavy application it's essential to understand. I swear when I finally got my head around how prototype chains actually work, it was like reaching a level of enlightenment. It's definitely a concept I've never seen anywhere else.


Except that prototypes are not the only way to do OO in JS. There's also the confusing technique which declares a function which is used as both class definition and constructor.

function Box(col){
    var color = col;

    this.getColor = function() { return color; }
}
 
2013-04-30 11:47:27 PM  

t3knomanser: But even that's way more expensive than Steve, down in receiving, who went to a class and learned to make Access Macros.

So Steve builds this shiatty little Access DB, puts it on a network share, and three weeks later, it's OMG!!1!MISSION CRITICAL. Six months later, when they discover, "shiat, Steve is spending 50 hours a week keeping this running, and his actual job isn't getting done," they go, "Hey, corporate IT, can you own this? It's an IT asset, right?"


Are you snooping around my gig here?  Because you just described the creation of this shop, quite literally.  The first guy to write a line of code started out in VBA and excel spreadsheets, moved to access and then vb.net.  Mid way into VB he realized he was out of his depth and has become a BA/PM and not a bad one at that.  But the result is a SQL db with > 7 tables with more that 300 columns.  I give the guy a pass because he was learning and quickly learned what he had done was bad but was not allowed to go back and fix it.  6 years later one of these apps has crossed through 7 sets of junior developer hands.

I was asked to "leverage it" for a new target.  I spent about an hour cruising the code and thought
25.media.tumblr.com.
We are now re-writing the app(s) with a new foundation done correctly.
 
2013-04-30 11:48:22 PM  

Marine1: PHP is exactly what he said. It's not as much of a language as it is a bunch of cobbled-together functions. The syntax is C-like but there are *just* enough differences to get you into trouble, and as he said, there's no way to debug. From what I've seen of it (so far), I like ASP.NET better, if for no other reason than it just fits together better.


If you're willing to hassle with it, there's xdebug. But the main problem with php+xdebug is the lack of good clients. Komodo IDE is the best one I've seen.

Well-written PHP, from the ground up in a base project, can be manage extremely well with Komodo. You can even get "intellisense" stuff, docblock parsing, as well as runtime debugging. However, taking someone else's PHP and throwing it into Komodo isn't going to just work by any means. And the rest of your criticism of the language is totally valid. There may be others besides Komoodo. That's just the most recent one I used.

But yeah, xdebug works if you have a real desire and need to mess with it. You have to install it on the server, configure it, and then it communicates with Komodo over a given port.
 
2013-04-30 11:58:53 PM  

t3knomanser: So Steve builds this shiatty little Access DB, puts it on a network share, and three weeks later, it's OMG!!1!MISSION CRITICAL. Six months later, when they discover, "shiat, Steve is spending 50 hours a week keeping this running, and his actual job isn't getting done," they go, "Hey, corporate IT, can you own this? It's an IT asset, right?"


This is the great thing about software design. Steve is right in the sense that Steve knows what Steve needs. The disconnect is that Steve doesn't know the best way to give Steve what he needs. This is where you come in... But don't discredit Steve, he was given limited resources and he is (in the case that you described) -the customer.
 
2013-05-01 12:17:20 AM  

jonny_q: Tools are tools.


I think you are missing the thrust of my issue.  It is really not the languages, I've done C,C++, PHP, PERL, VB.net, C#, CL400, RPGIII (I don't and won't any more and the voices stopped) and others.  Loosely typed languages are fine as long as new developers are not allowed to use them or go through a code review process that involved flagellation for poor data object handling.

Here is a very real situation I had to fix that made fst_creeper all stabby:
< narrative voice>An (web) application (online testing and grading app) was created that used 7 tables (MySql).  All of them had well defined types.   New version of the apps were needed so because it was a rush coding sweatshop and all about PHP/MySql/Flash (an unholy development trio) the decision was made to clone the tables and just use new ones.  This happened 9 time before it was to be ported to MS platform after the client was bought by a new company  and the client said "nine instances of 7 identical tables,as if.  How about you guys make it 8 tables with a application table and merge them 7 sets of nine."  Somewhere in the later code, a developer did something stupid and a variable that was supposed to be an INT became a string.  PHP to the rescue, it's now a String.  But the DB expects an INT?  What to do? Well debugging is hard and I'm a new developer with poor practices and since PHP just deals with it, I'll just alter the DB, int become a varchar(50) and no errors.  3 years later the .net SQL dev is trying to run a ETL and runs into a type violation.  And has to tell the boss and client "BTW, funny story here, all of your testing data for apps X,Y, and X?  Totally worthless." </ narrative voice>

So maybe I should say I would have no issues with the languages if I could ever trust it, but it seems I can never trust it thanks to those using it.  As long as new developer with bad practices create bad but function code in it, I don't and cannot trust it.  Strongly typed languages have their own issues but this one has been huge in my experience.
 
2013-05-01 12:21:04 AM  
fst_creeper: There is nothing like having an application fail on 40% of the target PC's because they got the roll out of the new version of office before everyone else.

We have a third party tool.

People are asking us if it supports IE10 yet (because they already upgraded).

IT officially supports up to IE9 (IE10 for Windows 7 SP1 jsut came out in Feb).

The off the shelf software that we use is an older version, it doesn't support IE10.

A newer version of that of that 3rd party software does support IE10, BUT we won't upgrade to it for a while because it means upgrading the server pool as well.

The server pool is used by over 4000 users across 30 different business groups who all need to test their apps and signoff. And right now, we're currently dealing with a major upgrade of another system.

So no, lone user dude, we're not pushing an upgrade through just so you can use IE10 instead of IE9.

ParanoidAgnostic: Java isn't that bad.

Eight years of java development taught me that Java is indeed that bad.

The concept of Java was good, but the implementation we ended up with kinda sucks. I've never dealt with a more pedantic language in my entire life (and that includes assembly language).

Had an API provided by a company to interact with their system. In their great wisdom (I guess depending on whoever wrote a particular method), their methods either took an int or Integer as input, and returned an int or Integer as output.

Well, sometimes we need to take the output of one method and feed it into the input of another method, so now you have to dig into their API docs just to find out if method foo() wants an int or Integer as input, and wether it outputs an int or Integer. Then also go and figure out if method bar() wants an int or Integer as input.

Needless to say, there's a shiatload of .intValue() calls scattered around the code, along with comments that basically say "I wish this thing took an int as input".

I expected more from a 'modern' language. all of the methods on Integer should have been built into int from the beginning so that there was a clear and standard way of doing things without the guesswork. Yes I know int is a primitive and not an object, but I don't care. Make the compiler figure it out.

Also ... I know regular expressions.

imgs.xkcd.com
 
2013-05-01 12:22:36 AM  
Also, are we using StringBuilder or StringBuffer? Which one was thread safe again? I forgot :P
 
2013-05-01 12:25:12 AM  

ParanoidAgnostic: You also forgot Perl on your list. I've heard itdescried as write-only code and I can't think of a better summary.


Dear god THIS.  I can love me some PERL, but I've written some scripts, commented the hell out of them, added notes to the project file and 6 months later still cannot figure out what the hell I was doing/thinking 30% of the time.  And read others perl...0_o

That said, to this day the single hardest to read code I've ever encountered was written in VB.net.  I would not have thought it possible but it was.  (Written by the Steve we've mentioned before only his name wasn't Steve)

/Keith Code, don't ask for it by name.
 
2013-05-01 12:36:36 AM  

lordargent: Had an API provided by a company to interact with their system. In their great wisdom (I guess depending on whoever wrote a particular method), their methods either took an int or Integer as input, and returned an int or Integer as output.

Well, sometimes we need to take the output of one method and feed it into the input of another method, so now you have to dig into their API docs just to find out if method foo() wants an int or Integer as input, and wether it outputs an int or Integer. Then also go and figure out if method bar() wants an int or Integer as input.

Needless to say, there's a shiatload of .intValue() calls scattered around the code, along with comments that basically say "I wish this thing took an int as input".

I expected more from a 'modern' language. all of the methods on Integer should have been built into int from the beginning so that there was a clear and standard way of doing things without the guesswork. Yes I know int is a primitive and not an object, but I don't care. Make the compiler figure it out.


Strange. I would have thought autoboxing/unboxing would have taken care of that. I could be wrong, maybe it only works for assignments. I tend to stick to primitives wherever possible anyway.

/That's one thing that frustrates me about C#. Nothing is primitive... yet for some reason its fake-primitives can't hold nulls and need some awkward nullable declaration to use them as though they were -gasp- objects.
 
2013-05-01 12:37:13 AM  
fst_creeper: I think you are missing the thrust of my issue. It is really not the languages, I've done C,C++, PHP, PERL, VB.net, C#, CL400, RPGIII (I don't and won't any more and the voices stopped) and others. Loosely typed languages are fine as long as new developers are not allowed to use them or go through a code review process that involved flagellation for poor data object handling.

I prefer the perl method ... and ideally, the perl 6 method, if they can ever get a release for it out the door :^/

Basically, the language (perl 6) is loosely typed by default, but you can flick a bunch of pragmatic switches to make it strongly typed.

So if you're doing some quick one liners and don't give a crap about data types, leave all of that stuff turned off but if you're working on some huge API and sharing code with other people, turn it all on.

You could even turn it on or off as needed. In perl 5 I did a lot of work with templates, and in one template parser I would do the following.

# turn off strict reference checking
no strict refs;

### (code that when viewed by less experienced programmers makes them ask "Are you a wizard?") ###

# turn strict reference checking back on
use strict refs;
 
2013-05-01 12:45:12 AM  
ParanoidAgnostic : Strange. I would have thought autoboxing/unboxing would have taken care of that.

Java came out ~ 1995
Autoboxing/unboxing was introduced in J2SE 5.0 ~ 2004

So it only took nine years.
 
2013-05-01 12:45:32 AM  

lordargent: I prefer the perl method ... and ideally, the perl 6 method, if they can ever get a release for it out the door :^/


(please take this as the humor it is intended as)...

I can respect that and a great perl developer is something to behold...

...But I can never get rid of the feeling that there was a part of the process I missed that included chicken bones, a lions mane and a virgin in a gown of white that I really don't want to know about.

/goat leggings.
 
2013-05-01 12:49:39 AM  
I know somebody who got hired away from full professorship to run a team of his former PhD students in industry. Maybe that means he was a better programmer than teacher :) but really, they're all kind of exceptional.
 
2013-05-01 12:55:21 AM  

meyerkev: This.  I almost wish I was in a big shop where my WTF's (because I have no clue how it's supposed to be done and my WTF's do work despite being total WTF's) would get caught by some old dude, they'd whack me upside the head and show me what X is supposed to be for, and what the proper way of doing Y and Z in the language is.


Hrmmm, odds are you'll do just fine.  Hit places like Stack overflow.  Find the local development platform users group.  If you show that you want to learn how to do things right it's pretty good odds you meet someone who wants to teach you.
 
2013-05-01 12:55:45 AM  

lordargent: ParanoidAgnostic : Strange. I would have thought autoboxing/unboxing would have taken care of that.

Java came out ~ 1995
Autoboxing/unboxing was introduced in J2SE 5.0 ~ 2004

So it only took nine years.


Ah, I didn't realise you were referring to prehistoric Java. My experience has been much more positive since Java 6 was in widespread use by the time I picked it up.

/Resisted Java for a long time because I wanted my code to compile to an .exe not some fake executable which needed another program to interpret it. Got over it when I started C# and realised that it was the same thing, just pretending to be an .exe
/Probably why I hate more modern languages like python and ruby so much. Don't even get a fake executable... actually no, it's the snake-case. It's just so ugly.
 
2013-05-01 01:03:29 AM  
ParanoidAgnostic : Strange. I would have thought autoboxing/unboxing would have taken care of that.

BTW, I started with java in 2000 and basically stopped in 2008/9ish.

Prior to that, I was a perl developer (CGI based web apps, data processing, etc).

Perl mostly doesn't care about data types. If you have a number (100) and store it in a variable ($foo), it will use the smallest possible container for that variable.

In this case, a byte.

If you add to it

$foo += 500; # Now you have 600, which is too large to fit into a byte. At runtime, perl changes the underlying data structure. So now it's a short.

$foo += 60,000; # now $foo is an int internally

// you lose some iota of processing power when the conversion happens, but you're already dealing with a scripting language, and you're not exactly writing embedded code in perl. What you lose in cpu, you more than gain in flexibility.

Got something that gets a number that's input from a user. Do you declare the variable that will hold it as an int? a float? How large of a number will the user enter anyway? In perl, you just don't care because perl will use whatever it needs for what the user entered (though, if you get up to the point where it has to be stored in a float, you'll lose precision).
// perl came out in 1987 (vs java's 1995) , why the hell did java make us worry about types again? I thought the whole idea was to make a friendlier C :P
 
2013-05-01 01:06:14 AM  
Actually, scratch the above, I think it starts out with ints as the default size, not bytes/shorts.

I guess 32 bits was small enough.

// haven't read perlguts in forever
 
2013-05-01 01:12:57 AM  
ParanoidAgnostic: Ah, I didn't realise you were referring to prehistoric Java.

What? You mean you didn't inherit any 9 year old java code :D

// I do BI metrics now, using a much more sane set of tools. It's more math than programming. The language is sane, but the data inputs and requirements are sometimes insane like "We want you to process and analyze 1.2 billion rows of data from this DB".
 
2013-05-01 01:16:40 AM  

lordargent: // perl came out in 1987 (vs java's 1995) , why the hell did java make us worry about types again? I thought the whole idea was to make a friendlier C :P


Because Java is statically typed by design. Lots of programming errors are uncovered by type checking. If you really want to assign an instance of Car to a variable declared to hold an Orange then you need to take care of an explicit conversion.

Java doesn't pretend that types don't exist, Dynamically typed languages do.  This makes them good for quickly writing a script and you can do some cool things if you are clever but makes debugging them a pain.

you can always implement your own dynamic type in Java and use that where you want to do something clever, keeping the rest of your code safe from stupid errors.
 
2013-05-01 01:30:21 AM  
ParanoidAgnostic : you can always implement your own dynamic type in Java and use that where you want to do something clever, keeping the rest of your code safe from stupid errors.

Like someone else mentioned, they did add unboxing.

My gripe is that unboxing for some types should have been there out of the gate.

Perl does have types (at the OO level, when you're doing OO). But it doesn't really have types at the primitive level.

EX a scalar (holds a single value), can hold a string, or an integer, or a float, or a pointer, whatever.

If you want a strict type, then you would use an integer object, and compile time checking can catch that.

The difference is that in perl, non strict is the default, and it takes some extra work to make it strict.
Whereas java is strict by default and it takes a LOT of extra work to make it non strict.

perl 6 is supposed to be a happy medium between these two paradigms, but it may sadly never see the light of day.

http://en.wikipedia.org/wiki/Perl_6#A_type_system
 
Displayed 50 of 163 comments

First | « | 1 | 2 | 3 | 4 | » | Last | Show all

View Voting Results: Smartest and Funniest


This thread is archived, and closed to new comments.

Continue Farking
Submit a Link »
On Twitter





In Other Media


  1. Links are submitted by members of the Fark community.

  2. When community members submit a link, they also write a custom headline for the story.

  3. Other Farkers comment on the links. This is the number of comments. Click here to read them.

  4. Click here to submit a link.

Report