Besides, what is "new"? MVC has been something of revelation to most web "engineers".
In fact (or maybe it comes with age) I started to dislike new stuff, like Flash/Flex/Air. I see a great danger of "web runtime" being controlled by a company. If they won't stop, Adobe will soon become "Microsoft of the Web" because they'll be controlling "Web OS". This is why I want AIR to fail and I hope that more web applications stick to HTML/CSS/JavaScript as opposed to moving to Adobe world.
For same reasons I always stayed away from Java. Same applies to Silverlight.
I do like D though (the language). But the author made two crucial mistakes that will inevitably hurt this beautiful systems programming language: he picked a name that does not work with search engines at all, and he decided to control too much - won't even let other people to distribute binaries of his compilers.
As a recovering C++ zealot, I totally agree that D is a cool language. "D language" or "Digital Mars D" does turn up the right hits on google. :)
There are free implementations of the D language, e.g. there's a front-end for GCC. And the source code to the Digital Mars front-end for D is available under a GPL and Artistic License dual-licensing scheme.
You may suggest that D isn't for them because "real programmers" use Linux, but I'd argue that "hotness" of a language largely depends on its popularity among youngest and most curious and enthusiastic users.
If a kid who's got a Dell/Vista laptop for Christmas decides to "become a programmer", he won't be doing it in D after visiting digital mars site - I guarantee you that. He's got two weird zip files up there and it took even me a while to figure out what goes where.
There's another thing that cuts closer to home. Most programmers, even most /smart/ programmers, are intellectually conservative and reluctant to look beyond what they already know. The smart ones will happily learn something like Java Faces or WPF when it comes out, just like they learned ATL or whatever when it came out; that is, they'll upgrade to the next release of the same old same old. But most will never reflect much on what they're doing and only a handful will ever jump out of the rat's nest. How many of those COBOL programmers ever learned a new language? The vast majority simply retired. Yet I'm sure many of them were smart at what they did.
What all of this amounts to is a vast market inefficiency that will almost certainly be supplanted by ways of building software that aren't insane; it's just a process that takes decades (if not centuries - how long did the industrial revolution take to figure out how to really do manufacturing?) I see YC as a conscious move in this game. Given how soul-destroying most software projects are, that's an inspiring development - to see the balance shifting in favor of the creators.
I'm grateful that I listened to my intuition that there was something wrong with those "new" and "advanced" technologies. For me as well, it is the depth and simplicity of a Lisp, Smalltalk, or APL that is fresh.
For instance, if you have two terms, and you want to see how similar they are, that's P(A|B). So do a search query for A&B and for B, and P(A|B)=P(A&B)/P(B), and that's a first approximation, a Google Distance, for arbitrary terms.
The information silos are only a couple years old, and already they're so valuable. I can't wait until the Internet's a century old.
If you are interested:
http://uint32t.blogspot.com/2007/11/web-programming-framewor...
http://uint32t.blogspot.com/2007/11/update-web-programming-f...
http://uint32t.blogspot.com/2007/11/lisp-web-framework-desig...
So far it is fucking amazing. I love it.
Also seeking a deeper understanding of language design and compilers. Some inspirations for why:
http://steve-yegge.blogspot.com/2007/06/rich-programmer-food...
http://martinfowler.com/dslwip/
Next on my list after all that: Machine learning.
Filesystems -- how to write them, and what's out there already.
public class hello {
public static void main(String args[]) {
System.out.println("Hello World");
}
}
Also, I interviewed with a large company that shall remain nameless (probably not who you would expect), and one of the interviewers mentioned that their build system was a MILLION lines of Perl...A million lines of Perl, was maintaining that part of the job description?
And in Python, print "hello, world" is bad form. It would be proper to write (news.YC is omitting some newlines below)
def main(): print "hello, world"
if __name__ == "__main__": main()
I think the reason the LOC count is significant is because it means that there is less code for one to look through to figure out what is going on. Fewer lines imply that the solution has high level abstractions. Each one of the examples you mentioned is one construct in lisp (if you use libraries).
More abstractions can be nice, but don't mistake it for less code. Its still code somewhere, and that can lead to much more subtle and hard to find problems if you don't understand exactly what's going on. Of course, some environments are bigger culprits than others, but its something to keep in mind.
The reason you can get by with a shorter hello world program in most dynamic languages is because you're doing it in the "module" definition, which I think is not proper form in any non trivial programs. So any differences in LOC for hello world really mean nothing over the course of a real application.
I actually like the way regular expressions are being handled in Java. The only problem is that "\" has to be escaped in Java Strings, so the regex patterns tend to have a lot of slashes.
Screen scraping. I don't have any major problems with Java--it's just that it lends itself to serious over-engineering. Maybe that has more to do with business culture.
MJD's Higher Order Perl is a fantastic resource for "new" techniques as applied to Perl. And, I've read the latest edition of the Camel book and found that I never really understood the language when I was using it three or four years ago (at the time I had read Learning Perl, and Perl in a Nutshell). Perl is so much more powerful, concise, and pretty, than I'd realized.
Perl 5.10 and 6 are really quite nice, as well. Objects are still somewhat quirky in 5.10, but will be fixed beautifully in 6. Likewise for named function arguments. Field Hashes are neat.
Oh, and using JSON with Perl is lovely--since everything we do is passing around references to arrays and hashes and such, converting a traditional HTML UI to an advanced JavaScript one is so much easier than I expected (and because objects are hashes, it'd be possible to do something similar, even if our code were more object oriented). Really quite smooth. JSON::XS is super fast and easy to use.
I want to do a web thing in Erlang + javascript, but haven't quite figured out what... although <horn tooting> I actually started using Erlang a number of years ago.
I don't really see a future for MXML in it's current form but the rest of the stack--mainly ActionScript 3 / the SVG drawing API, Video/Audio APIs are definitely worth looking at. Some of the highest paying web development gigs are in Flash programming, and it's a lot less painful than browser programming (which isn't saying much).
- Android SDK (though it was kind of surreal to realize that I was coding Python for work and Java for play... @_@)
- Cairo vector graphics (it's not that hard to get Cairo-rendered buffers into OpenGL textures (though you do have to un-premultiply the alpha values :P))
- Working on a lightweight embeddable lisp compiler (currently hosted in Python). Stealing good ideas from Arc, so get coding, Paul! ;-)
- Working on an interesting, erm, "lifestyle-enhancing" webapp in Django [one that already provides value to me just by having it for my own use!]
- Pyglet (python multimedia and windowing lib)
For work:
- Coding web apps in Pylons. (SQLAlchemy is a manly ORM that makes other ORMs look like babies' toys ;-)
- Further investigating haXe and OpenLaszlo (did this for fun on my own a while back, but didn't have time to do much with either of them)
As you can see, I love to code lots and lots :D
That's fun, especially with jQuery, which I highly recommend.
The first one that is almost wholly free of server-side code is a "news" module that pulls a feed from our forums News category on our company website. ExtJS makes this kind of thing trivial (one of their example apps is an RSS feed reader that uses Google Gears). Other short-term bits will be converting all of our graphs to dynamic versions that change every minute or so. Bigger plans include a terminal emulator to replace the Java applet SSH client we currently include. Interactive terminals are trickier, and I'm not sure if we'll end up implementing the actual full terminal emulator in JavaScript or do most of the work server-side and just pass things down to the server (probably the latter at first). But, very short-term (like being released sometime this week) it's all just conversions of existing widgets to present nothing but JSON--it actually makes the server-side code remarkably simpler to not have any UI elements.
Here's a bit of a survey:
The better method is search, or more accurately, comprehension, but this is a grail quest, and my solution isn't done yet.
I'll also second what everyone else said about learning Lisp, Smalltalk, early windowing systems, UNIX fundamentals, and other forgotten areas of the history of computing. There're lots of good ideas in there.
(Its a troll, in case you don't know.)
It's for a class, but it's consuming most of my free time. The classroom instruction is good but we're largely on our own as far as implementation goes (though it has to be written in C or C++).
We only have to finish a subset of C, and I'm not planning to take it any further.
1. SERS 2. MEMS 3. Taggants 4. Ground source heat pumps 5. OLPC 6. NMR/MRI 7. ERP
Except for 5 maybe 7, not common topics of interest here.
Defined is a more meaningful word. I believe both languages have specs that clearly define how the language should behave. I suspect what you mean here is that when doing client-side programming, you'd prefer to only have to worry about one implementation instead of the 4-5 Javascript interpreters we currently need to worry about.
I asked you to explain yourself because you were expressing a belief - that a statically typed language that uses a lot of boilerplate and doesn't have first class functions is preferable to a dynamically typed language that doesn't require a lot of boilerplate and does have first class language - that is believed to be false by most members of this community. You are, of course free to get excited over anything you want, but expect to be challenged if you make meaningless claims about your favorite technologies.
http://feeds.feedburner.com/~r/FractalsOfChange/~3/179825426...
learning about business process modeling languages.