Domain: artima.com
Stories and comments across the archive that link to artima.com.
Comments · 202
-
Benoît Widemann from Magma et al.
I haven't heard most of Widemann's work, but Magma's Live/HhaïMagma's Live/Hhaï, where he appears, is for sure a must hear of prog rock.
Mike Ratledge from Soft Machine, I think I read somewhere that he wrote software for music creation years after he left the band, but I couldn't confirm. (maybe this is related?)
-
Am I the only one that noted this?
The first link points to the same page as the second link. It should point to this
Ok, this is Slashdot, no one clicks those links anyway. -
Bad link?
First link should probably be to http://www.artima.com/forums/flat.jsp?forum=106&thread=214112 .
-
Re:Just starting out with Java
Easy on those overloaded methods now. I suggest you read this first:
http://www.artima.com/weblogs/viewpost.jsp?thread= 7852
I too fled from PHP, but not to Java.
-Randall -
Re:Wow, I didn't know that Ruby could do that!
See, the difference between my post and yours is that I'm actually right. I suppose that's what's bothered you into turning my post into a canned troll, you're a fanboy and you felt personally insulted. I'm glad. I intend to insult you further, in fact. Only because you've made it so easy for me.
Being that you're obviously uneducated and malicious, I'll do my best to try and inform others, as I doubt you have the cognitive capacity to make sense of factual information:
1) Your claim is that Python is a primitive and feature-incomplete language, which is -true- of Ruby. Perl might be feature-complete if 6 ever comes out...keep holding the faith, eh? I'm guessing we'll be replacing the Linux kernel with HURD before that happens. Great OOP and functional programming features, libraries for everything from advanced math functions to graphics display (many of which are included in the standard library, as opposed to having to pull it down from CPAN).
2) easy_install doesn't come with Perl. That's certainly true, it's a python program. Perl has CPAN, which pretty much does the same thing. Not so much of a lie as pointing out the obviousness of your canned troll.
3) Yes, many of the points that I made about Python can also be made about Perl. But some of them can't, and that's where your argument falls apart again. Example: Turbogears (www.turbogears.org), a project similar to Rails that brings together a number of mature, web-development related projects together as one product. Cell phones that are capable of running Python are technically capable of executing a web-server on said cell phone if they wished.
Can the same be said for perl? Maybe. Search for "perl embedded cell phone" on Google. You'll get a few million results, but none of them will be a cell phone that runs perl as an embedded language. What do you get when you do a similar search for python? http://www.artima.com/weblogs/viewpost.jsp?thread= 148064 (which for those of you who don't care to read, is an author reviewing Python as used on a Nokia cellphone).
4) The statement that Python has difficulty with internationalization support is patently false, anyone who cares to point their browsers at www.python.net may verify that for themselves. This is the process involved in creating a unicode string in python:
unicode_string = u"Test."
What does the Ruby on Rails wiki have to say about internationalization support (which is fully offered in Turbogears by the way)?
http://wiki.rubyonrails.org/rails/pages/Internatio nalization
First paragraph of the page: "Rails currently doesn't offer any explicit support for internalization."
Well, there you have it. You're obviously wrong, you obviously attempted a canned troll, and you obviously failed. Not that I expected a great deal from a pale and overweight man who lives a secret life from his children trolling on Slashdot. If you can really call that a life. I wonder what they'd all think of you if they knew you were acting like an angry pre-teen online? Think they would still respect their father with that knowledge? Do they even respect you now?
I don't intend to reply to your messages any further, as it's obvious that's exactly what you want...attention. Maybe because you don't get enough of it in real life -- the frustration brings you here to troll like a little boy having a temper tantrum. Well guess what? You're not a little boy, you're a man...or at least you would be if you weren't acting like such a dipshit. Grow up. -
Re:Wow, I didn't know that Ruby could do that!
See, the difference between my post and yours is that I'm actually right. You're hanging onto the antiquated turd called Perl, which acts as a sort of poor crazy-glue that holds projects together. Its days of significance are long over; the majority of work opportunities for Perl programmers involves maintaining systems that were written years before.
Being that you're obviously uneducated and malicious, I'll do my best to try and inform others and embarrass you at the same time:
1) Your claim is that Python is a primitive and feature-incomplete language, which is -true- of Ruby. Perl might be feature-complete if 6 ever comes out...keep holding the faith, eh? I'm guessing we'll be replacing the Linux kernel with HURD before that happens. Great OOP and functional programming features, libraries for everything from advanced math functions to graphics display (many of which are included in the standard library, as opposed to having to pull it down from CPAN).
2) easy_install doesn't come with Perl. That's certainly true, it's a python program. Perl has CPAN, which pretty much does the same thing. Not so much of a lie as pointing out the obviousness of your canned troll.
3) Yes, many of the points that I made about Python can also be made about Perl. But some of them can't, and that's where your argument falls apart again. Example: Turbogears (www.turbogears.org), a project similar to Rails that brings together a number of mature, web-development related projects together as one product. Cell phones that are capable of running Python are technically capable of executing a web-server on said cell phone if they wished.
Can the same be said for perl? Maybe. Search for "perl embedded cell phone" on Google. You'll get a few million results, but none of them will be a cell phone that runs perl as an embedded language. What do you get when you do a similar search for python as a first result? http://www.artima.com/weblogs/viewpost.jsp?thread= 148064 (which for those of you who don't care to read, is an author reviewing Python as used on a Nokia cellphone).
4) The statement that Python has difficulty with internationalization support is patently false, anyone who cares to point their browsers at www.python.net may verify that for themselves. This is the process involved in creating a unicode string in python:
unicode_string = u"Test."
What does the Ruby on Rails wiki have to say about internationalization support (which is fully offered in Turbogears by the way)?
http://wiki.rubyonrails.org/rails/pages/Internatio nalization
First paragraph of the page: "Rails currently doesn't offer any explicit support for internalization."
Well, there you have it. You're obviously wrong, you obviously attempted a canned troll, and you obviously failed. Not that I expected a great deal from a pale and overweight man who lives a secret life from his three children trolling on Slashdot. If you can really call that a life. I wonder what they'd all think of you if they knew you were acting like an angry pre-teen online? Think they would still respect their father with that knowledge? Do they even respect you now?
You're a sad, sad excuse for a man, and I pity your children for having to acknowledge being related to you. -
from these
-
Re:Java 'generics' are not real genericsIf I pass a List to a method taking a List when it puts a Float in it there has to be a check of some kind to stop this, because each stage is correct. Java can remove this check in more cases than CLR. C++ does not check because it is actually different code that executes (ie bloat). CLR is also capable of removing the check on upcast calls (i.e. list.get()) as
.NET generics are truly type-safe. Java has no ability to do this. If you pay attention to what Anders says for instance in interviews you find that .NET objects don't have a cast on get because each type has its own vtable. Practically speaking what this boils down to is that there is no inlining across method calls from objects you get from a collection (for instance). With Java you get a cast, in general taking about 2-3 instructions, and an inlined method call. In CLR you avoid the cast but essentially guarantee no inlined call. I think even you can correctly guess which of those is better. In fact I refer you to this interview:
http://www.artima.com/intv/choices.html
For shame, Anders. If you don't believe me about these performance problems how do you explain Anders' backpedaling in that interview? It's clear that at that point he didn't even understand the fact that JVMs are actually inlining the code not 'jumping straight there'. I'm not sure I understand. Implementing IEnumerable in generics doesn't imply any "parallel type hierarchies". Are you sure you are not confusing C++ templates and CLR generics? Obviously you do not understand. ArrayList is a type, instantiated at runtime in C# (and incidentally never collected until the entire classloader is collected). It is a subtype of both List and ArrayList. Parallel hierarchies... get it? Are you talking about the speed of JIT phase? This is O(1) step, who the hell cares. In run-time performance the CLR generics are a lot better than JVM ones even on reference-based collections O(1) step for .NET means the code has to be JIT'd, poorly, just to run. This is a direct consequence of their support in the bytecode for generics and more to the point the support for value types. In Java your O(1) means 0 because the bytecode can be effectively interpreted. Design choices have impacts that are not always clear up front, but Sun having decades of experience made far fewer.
There's a reason why Microsoft threatens to sue people over unauthorized CLR benchmarks; that reason is that it is slow. Do you wonder why instantiated generic types are never collected and float around until the application exits? It's because to rebuild their optimized type comparison trees (so instanceof is not ridiculously slow ie anywhere from dozens to hundreds of cycles) they would have to remark all objects in the system, but worse would have to recompile a lot of code. CLR has a built-in support for extensible value-based types, so supporting them in generics without boxing is quite useful. yes it is quite useful in CLR... it helps even out the negative performance impact throughout the entire system that are direct consequences of those same choices. -
Re:Java 'generics' are not real generics
Doesn't seem to jive with what was said here: http://www.artima.com/intv/generics2.html
I think I'll take the CLR creator's word over the word of one of Java's self-proclaimed Bad Coder's. Probably the biggest point from the article is this one:
"Now, what we then do is for all type instantiations that are value types--such as List<int>, List<long>, List<double>, List<float>--we create a unique copy of the executable native code. So List gets its own code. List<long> gets its own code. List<float> gets its own code. For all reference types we share the code, because they are representationally identical. It's just pointers."
Seems to me that Java is using a glorified macro system that, instead of making casts unnecessary, just hides them from you.
-
Re:Java 'generics' are not real generics
Please, read about generics in C# and value type usage in generic code. You can create generic collections of value types without overhead of boxing.
For example, here: http://www.artima.com/intv/generics2.html -
Re:RapidMind = vendor lock-in
-
Re:You can learn from games
Squeak and eToys are currently included with the OLPC. And it is a wonderful way for kids to learn to program games, as well as for programmers to learn about Alan Key's revolutionary ideas! It's purpose is to inspire people, expose them to Smalltalk's unique ideas, the possibilities of visual programming systems, and point the way for future development. But the mainstream of software development on the OLPC will be done in Python.
Guido Van Rossum writes about Alan Kay's talk on his blog:
Alan also talked about the $100 laptop project; he is on the OLPC advisory board. Apparently Python is specifically involved. There was little Python content to Alan's talk, which is fine by me -- Keynotes like this one are supposed to challenge or tickle the audience, not necessarily to confirm their world view. Alan did end by expressing the hope that a system like he demonstrated will be implemented in Python; apparently (or just for the occasion
:-) Alan believes that Python has a much larger mindshare than Smalltalk or Squeak, and that because of this a similar environment in Python will have a greater chance of succeeding than the current Squeak one. Also, the $100 laptop already has Python, and Alan is of course hoping that a Squeak-like environment will be part of it, so this appears expedient. (At the Shuttleworth summit in April I believe Alan also suggested that Squeak is suffering from its extremely simple graphics model; apparently it cannot benefit from graphics accelerator cards because of its platform-independent architecture. [Update: this is incorrect, see responses below.] Python on the other hand already has bindings to OpenGL and DirectX, for example.)The idea is to re-implement the ideas of Squeak and other educational constructionist visual programming systems in Python, deeply integrated with the OLPC's Sugar user interface, and based on its libraries like GTK/Cairo/Pango, etc. Alan Kay writes on the Sugar mailing list:
Guido knows that I've been advocating that the Python folks should do Etoys or a very Etoys like environment in Python (and that the rest of the OLPC be given an objectification and media and scripting integration that is Etoys like).
However, there are simply zillions of things left to be done everywhere for OLPC so the first round of SW on the XO will be more of a gathering of "suggestive" features and abilities (of which Etoys is just one). That seems fine to me.
Viewpoints Research (our little non-profit) doesn't have any "ego or identity" staked around whether the children's authoring environment is Python based or Squeak based. I have said many times that, if the general integrative base of XO is to be Python, then the Etoys-like authoring should be based in Python also.
However, I will personally fight to the death to make sure that there is a children's authoring environment that allows even young children to do simulation style programming with very rich media objects.
For now, that is Etoys. It could be a suitable object-oriented Logo with media objects (this is essentially what Etoys is). It could be some better design (let's do one). The base could be Javascript (if implemented on top of an integrated environment of sufficient power), Python (ditto), Ruby (ditto), etc. Whatever it is, it has to be above high thresholds, not a hack or a gesture.
Besides the programming the children use to learn important ideas in math and science, they also need to be able to see how their own computer world is structured by being able to "pop the hood" on practically everything they use. Perhaps it is OK for high school children to see the current code (but I don't think so). I think there needs to be a wrapping on the entire set of facilities that uses the same conventions that 9 year olds do th
-
Re:Java not slow enough for you? Try Ruby!
Performance isn't everything, but then again, when you are 400 times slower than Java..
400 times slower? Still too efficient. Consider a Ruby implementation on the JVM and multiply inefficiencies! Should be thousands of times slower for those same benchmarks.
About JRuby; Sun recently hired two (both?) of the JRuby developers and progress has accelerated. The promise is a highly capable Ruby implementation running on a JVM. This, coupled with very recent changes to the JVM to facilitate scripting languages could lead to an interesting future. Sun is also leveraging the JVM for other language projects such as Fortress.
Apparently Sun isn't content to let Microsoft's CLR become the de facto standard bytecode runtime platform. I don't know whether it's possible to make Ruby performance on the JVM competitive with native implementations, but I am hoping. -
Re:Lemme guess...Microsoft stopped bundling Java?
You can read the original version here:
http://www.artima.com/weblogs/viewpost.jsp?thread= 193593 -
Re:No basic types
I'm not the poster of your post's parent, but I did a bit of searching (since I was interested too), and in most cases it seems to be simply that he believed that unsigned types just add complication to little real benefit. He often cites that Java was supposed to be reasonably simple to understand the semantics of, and that unsigned types tend to dilute that. I tend to agree (I never really "got" unsigned types), but here's some indicative quotes:
In programming language design, one of the standard problems is that the language grows so complex that nobody can understand it. One of the little experiments I tried was asking people about the rules for unsigned arithmetic in C. It turns out nobody understands how unsigned arithmetic in C works. There are a few obvious things that people understand, but many people don't understand it.
Q: Programmers often talk about the advantages and disadvantages of programming in a "simple language." What does that phrase mean to you, and is [C/C++/Java] a simple language in your view?
...
Gosling: For me as a language designer, which I don't really count myself as these days, what "simple" really ended up meaning was could I expect J. Random Developer to hold the spec in his head. That definition says that, for instance, Java isn't -- and in fact a lot of these languages end up with a lot of corner cases, things that nobody really understands. Quiz any C developer about unsigned, and pretty soon you discover that almost no C developers actually understand what goes on with unsigned, what unsigned arithmetic is. Things like that made C complex. The language part of Java is, I think, pretty simple. The libraries you have to look up.
Hope that's the sort of thing you were looking for.
:) -
Re:A step in the right direction...
I appears that Google use java because it is strongly (i.e. statically) typed and that makes it easier for them to streamline the assembled code to only use those functions that are needed.
From Here: The GWT will do static analysis of the code, and remove all methods that you don't actually call. We do very aggressive static analysis so that if you import a huge Java library, and only use one class, and one method within that class, we eliminate all the other code, and won't output [that] to the JavaScript. -
Re:Stroustrup is the problemStroustrup insisted that C++ had no major problems - it just needed some cleanup. Lame FUD. Can you provide a reference that supports this fallacious statement?
My recollection is that Stroustrup was:
- encouraging library extensions rather than language extensions, acknowledging that the language was already complex enough as it is
- encouraging language changes/extensions only where they make C++ easier to learn and understand
Short of dropping backwards-compatibility with the current code base, what kind of language changes would you like to see? C++ is unique in that it has hiding without safety. Noting in the C++ standard requires the language to be "unsafe".If you look at standard C++ library implementations, for example, some are currently providing ubiquitous range-checking (within the library). Compliers have started to provide built-in checks for buffer overruns. You can integrate a garbage collectors as add-on (personally I much prefer RAII). And C++ could be compiled to a virtual machine.
But the standard does not mandate any of the above, because it does not want to preclude the use of C++ for system programming.
And it also just seems that the community of C++ users still remain more interested in the latest optimizing compilers and auto-vectorization capabilities, than in the safety-enhancing features. -
Re:Python is SLOW
Google Code Jam allows Java, C++, C#, VB.NET and
. -
Artima
I have seen a number of articles on DBC & C++ on Artima
A quick google came up with:
http://www.artima.com/cppsource/deepspace.html
though search the Artima site and I'm sure you'll find lots more.
Another one:
http://www.ddj.com/184405997 -
Artima
I have seen a number of articles on DBC & C++ on Artima
A quick google came up with:
http://www.artima.com/cppsource/deepspace.html
though search the Artima site and I'm sure you'll find lots more.
Another one:
http://www.ddj.com/184405997 -
Re:Python is not anything like Lisp
heh
"Blocks are basically nameless functions. ... This is a common style, called higher order function style, among languages that can handle functions as first class objects. Lisp does it." -- Yukihiro Matsumoto (author of Ruby) -
Re:Sometimes I feel like a Luddite...
This has become common knowledge amongst Python developers, to the point that many people forget where it came from. I was at the 9th International Python Conference where Bruce Eckel (author of Thinking in C++, Thinking in Java, Thinking in Patterns) gave the keynote speech, so it sticks with me that it came from him. See http://www.artima.com/intv/tipping.html for a good interview with him that gives some details into his experience with the langauge.
-
Re:Sometimes I feel like a Luddite...
Okay, let's see:
1. For the namespace thing, the answer is no. The variable is scoped to the local context. However, Java does have the concept of public/private members, and Python has no such distinction. We used a syntactical marker ('_foo') to show private members and counted on code reviews to catch transgressions. Because Python has an automated way of setting up getters/setters using the property keyword, this is mitigated somewhat.
2. Dynamic programming errors: the Python world has this neat utility called pychecker, which does a static compile-time check of everything and warns you about potential problems. It catches a LOT of stuff, much like it was a typed language. Also, read this: http://www.artima.com/intv/pycontract.html
3. Agreed about the scripting language stuff - I was being a bit tongue in cheek. To me, they're all just programming languages, and I choose the right one for the job. The great thing about Java isn't the language itself, which is pretty dull, but the incredible support - huge class libraries, J2EE servers, and so on.
4. Python's unofficial motto is "There's only one way to do it." The emphasis is on readability, which is why map and filter are supposedly being dumped, because list comprehensions do the same thing more readably. So you shouldn't be concerned on this front.
Here, read this for god's sake: http://dirtsimple.org/2004/12/python-is-not-java.h tml
Washington/Idaho, eh? Strangely enough, I was nearly in Idaho this summer. I work well remotely, by the way ;) -
But Sire, the train has left the station
I doubt if this will change anything:
1. In the application space, there are much more productive languages and tools. Think Ruby, Python. And extreme performance has never been a Java forte either.
2. Core language capabilities are obsolete now. Bruce Eckel's famous piece The departure of the hyper-enthusiasts captures this nicely. And looking at the C# 3.0 spec, with lambdas, automatic type inference, monadic comprehensions and lots of functional programming goodness, Java is left way behind. MS is also way ahead in adding dynamic languages support to the platform (Microsoft supported IronPython v1 for .Net Fx due out this month.)
3. I think Gosling needs to move on. After he said Ruby/PHP are just scripting languages, and they just generate web pages, and lack the "power" of Java. [Which "power"?]
4. With Vista MS would have finally killed Java's Run Anywhere promise. It will still run, but it will look totally out of place. The new eye candy, and the good communication foundation (WCF) is better and easier accessed through .Net.
The only reason to have Java is for compatibility in a "Legacy" Java environment. Kind of the same reason why we still have mainframes. These days I cannot think of a single reason why someone would go with Java, other than interop. -
Python, too
This will be the first year that Python will be allowed along side the traditional TopCoder languages (Java, C++, C#, and VB). I think it will be very interesting to see how Python, which more often than not get can get more done with less code and less time, will compare to the heavier languages like C#, C++, and Java. I wonder if Guido working at Google had anything to do with it?
-
Re:Whitespace
No lambdas Well, of course that isn't true. Lambda is syntactically limited in Python. Instead you have to use named functions if you are doing something complicated that can't fit in a lambda. That causes two changes: you have to come up with a name for the function (which I don't think is a substantial burden) and you have to declare the function before you use it (which can be a little annoying in some circumstances). But altogether, the lambda thing is way overused as a criticism; anonymous functions aren't all that important.
no ternary operator (yes I know, not pythonic) Python 2.5 has it -- RC1 should be out very soon
no switch statement (think Ruby, not C++) It can be nice sometimes, but I think it's overrated. Personally I usually use if/elif/else, which has some nice properties as the code evolves, but in other circumstances dictionary-based dispatch works well.
scoping rules are wrong (for example, list comprehensions leak variables - C++ for loops don't!) This is an admitted design mistake. Generator comprehensions (implemented after list comprehensions) do not leak variables, and in Python 3 list comprehensions won't either. I don't think it's a big issue that for loops leak variables -- I think it's actually reasonably intuitive that the value of the loop variable sticks around.
Underscores! __init__ __new__ __getattr__ __setattr__ __len__ __getitem__ . . . . Yes, these represent magic methods, something that has special significance to the system. Maybe other punctuation would be prettier in some circumstances, but not all. It also leaves all "normal" names to the application author; there aren't any non-magic methods that you have to worry about outside of your domain.
range(1,5) = [1, 2, 3, 4] I don't know what your problem is here. Do you want it to return [1, 2, 3, 4, 5]? That would be horribly wrong. Python gets its ranges right, no question in my mind -- returning an inclusive range would simply be wrong. The way Python does ranges and slicing means that one-off errors are pretty uncommon. Having other kinds of ranges would mess that up.
Yes, Guido, map and filter suck, but only because Python lambdas suck. And nested list comprehensions look awful. He's kind of conceded that, but has not seen any reasonable resolution in the scope of Python's existing design and syntax. There's compromises involved in language design, and not everything will look right given any particular syntax. In Python's case function expressions just don't work well. Instead Python offers a couple forms of syntax (list comprehensions most notably) that deal with some particularly common uses of function expressions in a way that does make sense. (And sure nested list comprehensions look awful -- don't use them! Use chained generator comprehensions or something more sane for the reader.) And hey, Python took it from Haskell, so it's gotta be pretty good.
-
Re:Why not Objective C?
Objective C is simpler and easier to learn than C++, but programming in Objective C (epecially with openstep) requires a fairly solid understanding of design patterns. It is a very smooth and easy language once you understand them, but learning how to write good objective C is one giant mountain of a learning curve. It is hard to write 'bad' code without realizing it.
Of course, it requires a lot of knowledge to program good C++ as well, but it is easy to write bad C++ and not even realize it. Thus many programmers will write merrily on their way in C++ and not even realize that their code is an ugly mess.
Here is an interview with Bjarne Stroustrup where he gives a similar point of view (although I don't think he likes Objective C). -
Guido says he doesn't endorse any web framework.
Re: Which was chosen?
Posted: Apr 21, 2006 6:46 AM
I'm using Django templates and am very happy with them. I've not had time to compare and contrast it to other frameworks, or even to try out other parts of Django. I do have to say that I am very happy with the way the Django project is being managed; they seem to really "get" open source community projects. I also like WSGI and Phillip Eby's wsgiref implementation, which has been made a part of Python 2.5.
I've decided not to officially endorse a particular web framework; it would be way too big a responsibility. I do recommend that web developers (I'm still not much of one) get together, share experiences, and ask the web framework developers to standardize low-level APIs in additionn to WSGI (PEP 333). Also, I recommend setting up a wiki page where web frameworks are compared and contrasted, as a service to prospective users.
So no, he doesn't prefer Django. It's official: he makes no endorsement whatsoever, except for the low level WSGI standard. He's using Django for at least one application, but he encourages people to compare and contrast all web frameworks.
-Don
-
Re:Guido prefers Django (says who?)
"""
I took a brief look at Django, and while I like their website (pretty and easily navigable and chockfull of useful information), I'm not keen on the particular tools they provide (it doesn't help that they begin every example with "from mumble.something import *").
""" - http://www.artima.com/weblogs/viewpost.jsp?thread= 146149
doesn't sound like he likes it much either... -
Re:Guido prefers Django
> FYI Guido van Rossum prefers Django
Guido is a language designer, not a web developer. What he prefers has absolutely no bearing considering that he was asking the community to teach him web frameworks 6 months ago.
http://www.artima.com/weblogs/viewpost.jsp?thread= 146149 -
Guido prefers Django
FYI Guido van Rossum prefers Django (from his blog).
And people that use web frameworks in Python will probably be interested in WSGI 1.0 (the Python Web Server Gateway Interface) that will be added to the standard library in Python 2.5: it will probably be supported by all the major Python web frameworks.
-
Guido prefers Django
FYI Guido van Rossum prefers Django (from his blog).
And people that use web frameworks in Python will probably be interested in WSGI 1.0 (the Python Web Server Gateway Interface) that will be added to the standard library in Python 2.5: it will probably be supported by all the major Python web frameworks.
-
unable to learn
a maze with all the protect-you-from-yourself password-entry and 'Continue' boxes
If anything, than this provides solid proof that MS is unable to learn from mistakes. Read Confirmation Dialogs harmful for a glance of what's been going through the heads of a lot of security professionals the past few years (disclaimer: including me): That the whole "are you sure?" bullshit is a huge fiasco. The only thing it did was train users to click "Ok" or "Continue" without bothering to read the actual text. If there wouldn't be such a slobbering mass of 'em, the dialogs might be taken seriously, but there is and they aren't.
I said it a couple months ago, and I still stand by it: Vista is a trainwreck happening in slow-motion. It's horrible to behold. -
Re:C# lameness: non-virtual methods
An interesting discussion of this issue with Anders Hejlsberg:
http://www.artima.com/intv/nonvirtual.html
I do find that the points on versioning hold some truth. -
C standardNot as familiar with C, but as for C++, they take great efforts to be careful about language and library changes breaking compatibility, check out Stroustrup's thoughts on the latest version of C++.
You're marked a troll, but the advice is on the mark IMO. Ironically, Microsoft's code (I'm not talking about their
.NET, but for example their Win32 API) is rather backwards compatible. And always take the trouble to steer clear of Microsoft-specific extensions where possible (i.e. managed C++ != C++). You can take 10 year old code, run it through Visual C++, and it runs on Windows XP. But that's the way it should be. Customers don't want to muck with migrations every 1 or 2 years, they want some decent ROI. -
Re:Dynamic typing
In this interview, the interviewer frames the exact same issue I am talking about. Python is repetedly described as a "weakly typed system", the issue of contracts in methods is exposed, and Guido accepts the argument. But of course he might not know what he's talking about.
-
Re:It's Too Much.
Bruce Eckel's "Departure of the Hyper-Enthusiasts" might be to your liking:
-
Check out Ruby on Rails
Why not check out Ruby On Rails?
Websites
RubyOnRails - http://www.rubyonrails.org/
Ruby general
http://www.ruby-lang.org/
Programming Ruby book - 1st edition online.
http://www.rubycentral.com/book/
Ruby Code and Style Online Mag
http://www.artima.com/rubycs/index.html
Small article on how to program in ruby.
http://www-128.ibm.com/developerworks/linux/librar y/l-ruby1.html
RubyOnRails vs Java for web development efforts
http://www.relevancellc.com/blogs/?p=92#comments
Another comparing Java and Ruby for Web Efforts
http://article.gmane.org/gmane.comp.lang.ruby.rail s/24863 -
Re:Totally fresh in programming
-
Re:Totally fresh in programming
Ummm, Dude? Python is not strongly typed. Try reading this http://www.artima.com/intv/strongweak.html; an interview with its creator.
-
Re:Ruby & Java == Moriarity & Holmes
"The real question is, can ruby be defined on its own terms, and not Java's?"
I'm not sure this is even a issue. the Disussion on Ruby Vs Java seems to happen totaly outside the Ruby 'community'. I read a lot of Ruby programmer blogs and don't see Java mentioned that much.
Interesting reading
http://www.artima.com/intv/ruby.html
The Philosophy of Ruby: A Conversation with Yukihiro Matsumoto -
Re:Java.
C# people claim their language is "better." I've used both - C# is not better enough to justify...
Is that still true with C# 2.0? How about with C# 3.0? Bruce Eckel recently said
"C# 3.0 may be too forward-thinking for Java to catch up to."
such as their pointless and absurd practice of mixing VM and non-VM code at every opportunity
Who is "they"? - if it's C# programmers in general, I don't see any evidence of that in the code that I've worked with. If it is the .net class library implementers, I'd say that the equivalent classes in the java runtime are probably written in C++ not java at all so the point is moot.
Either way I'm a bit surprised to see this old saw come up again, and I'd like to see some example, references or other justifications for saying it.
Any language significantly different from a C/C++/Java-like language can't be supported efficiently.
Again, what is your reason for saying that so categorically? There is evidence that suggest that the true situation may be otherwise.
I don't expect Mono to succeed even in its modest promises, although if they do, they may wish they didn't.
Ah, wondeful pessimism. -
Re:.NET?!?
The CLR aka Common Language Runtime is what is the VM for Java. CLI is what is bytecode for Java.
Java is the term used to describe both the VM and the language. That's why I didn't make the distinction.
Regardignm generics, I can't get why everyone is repeating that old myth? Java WAS FIRST with GENERICS. C# 2.0 was just releast last month!! and C# 1.0 HAS NO GENERICS.
Yes, Java implemented Generics before C#, but Java's Generics are not true generics. The reason for this is a limitation imposed by the VM... a limitation that does not exist in the CLR.
There are two major benefits for using generics, code generality (you can create a collection class that can accept any kind of object yet still be strongly typed as apposed to just accepting "objects"), and speed.
With Java's generics you get the generality, but not the speed. Here is a comparitive overview to look at, although it's by the creator of C# so there is obviously some spin... but it's factually correct.
After all .NET applications are written with an IDE that hides most of the technologie, you don't learn how stuff really works and if somethign fails you hardly can figure whats wrong.
VS.NET hides nothing. All the code it generates is there for you to see. In addition, you don't have to use VS.NET. You can write it in notepad (or Emacs, or VI, or whatever) and compile from the command line, just like Java.
A good developer will know how the platform they use works regardless of the platform in question. I used to code a lot of VB 6 and I was quite familiar with the inner workings. ThunderMain anybody? -
nevermind...
-
Re:seriously misleading article
I agree with the above and I'm not sure as to how well qualified this guy is to comment.
Bruce Eckel (http://www.mindview.net/ author of "Thinking in Java") seems to disagree with Brown's view on OOo 2 in his blog: http://www.artima.com/weblogs/viewpost.jsp?thread
= 133553 (Eckel is not an OSS programmer though he did work on Zope), he doesn't say OOo is perfect, but he was almost ready to give up Windows in favour of MacOS X because of it. -
Re:OK, so we'll open Java
> The problem is, there is no reason for Java to grow. It absolutely should not change. The whole point of Java is that it is a simple and elegant solution to most programming problems.
You can tell Sun not to work on Mustang then.
Java has bugs. The language needs to change.
> I don't use python, ruby, smalltalk or a veritable army of smaller, nimbler tools because they are smaller and nimbler! They move. Geeks play with them. I just want to work. I don't want my language changing out from under me.
Use ANSI C.
Why do you think the linux kernel is written in C?
> Until then, all I can do is beg sun to continue to defend my favorite language against those that want to add features, fracture it, etc.
Yes, all you can do is beg. But does Sun Microsystems Inc. care what you think? They will do whatever they have to do to maximize shareholder value, so, your begging is a waste of time.
> Seriously, if someone thinks they would prefer a more nimble language, why are they even concerned what sun does with Java? It is obviously not the language for them, and since Sun doesn't prevent you from making a similar language--feel free to do so and start modifying it.
Yes, that is true. And that is why the geeks have moved on. Geeks, I'll have you know, are not pimply-faced 19 year olds in basements. I'm typing from the second floor of a fortune 200 building while listening to a veery boring meeting with my netcom headset. We use java, and we use COBOL, and asp, and .net, and python. I develop tools in python when management asks: Can you do this in 10 minutes? And they know I use python. We use the languages that make sense. Using Java is making less sense each passing day.
> What is the advantage of opening Java over the users you listed just creating a similar related language or set of languages? In your previous post you never addressed that.
You can keep running whatever version of the VM you like (and it probably won't be touched at all except for maybe some securiy-critical back-ports). We're not stopping you. I'm talking about Java 3, 4 and 5 in 2007, 2010 and 2013.
"Standing on the shoulders of giants."
> Can't you admit that different programmers need different things, and that java is just what I need, and that sun opening it would simply ruin it for me and not help anyone else (since nobody is preventing them from creating their own now?)
I absolutely think the appropriate programming languages should be used for the tasks at hand. Sun can do whatever they want, and you can do whatever you want. But neither you or they should complain that nobody uses java in 8 years, and billions of lines of codes go to waste, including yours. What do you think is happening now with people that programmed all those client-server apps in VB5&6 in the 1995-2000 timeframe? Companies are setting up servers and terminal servicing into them to run "old" vb5 apps.
Sun it taking Java down that road.
I know. I was a VB programmer. I junked all that and deleted years of work because "it's obsolete".
By the way, Python started in 1991 to Java's 1995. Smalltalk goes back further. Java is the new kid on the block.
You really should take a look at python. You'll like it. I promise. Bruce Eckel agrees. See http://www.artima.com/intv/aboutme.html. You know Bruce, he's the guy who wrote "Thinking in Java", the de-facto bible of learning java programming.
I feel your pain and frustration, Bill, but in this world what you don't know can definitely hurt you. I'm not trying to hurt you, I'm trying to help you. (not-so-obscure movie line). -
Coding Standards, and others
Right now I'm more concerned about trying to set up coding standards...
Coding Standards? A good thing. Which ones? Doesn't really matter. Read Ken Arnold's Style is Substance for a good opinion. His point is that you shouldn't spend any time arguing about which style is best; just pick one of the few well-documented standards and enforce it as heavily as possible.
... so that any developer can jump into any part of a project and be able to figure out what's going on, without wasting a couple hours just to figure out the code.Unless we're talking about really well designed, really well documented and really well commented code, this sounds like a pipe dream to me. Maybe I'm just not skillful enough, but attempting to absorb any non-trival amount of code that was written by someone else is going to take a few hours. You're better off assuming that will be the case.
As far as general software development practices, I think you have two viable choices:
- Pick one of the popular Agile development methodologies; my first choice would be Scrum, but they all have common goals. Read a book or two on it so you get the idea. Then, go hire a consultant to help you run a Scrum project with one team. After you've done it all the way through once, you can probably run it yourself & expand the # of teams using it.
- Read a whole bunch of books on software development process, and don't limit yourself to the Agile methodologies. Document your favorite concepts, and why you think they'd work in your environment. With the help of a small group (3 people max), come up with your own process that is loosely based on your research. There is obviously a fair amount of risk here though: lots of smart people have spent many, many years trying to solve this problem, so be careful.
The one thing you shouldn't do is quickly review a few random articles, pull out a couple of the buzzwords, then never think about it again. The number of development groups out there that say they're following a certain process when they're really just winging it is astounding....
Oh, and take all suggestions from strangers on Slashdot with a big, chunky grain of salt
:)--Mid
-
Re:Take Java seriously
That's the gist of it, yeah. There's some notes on it here, it brings in a few limitations of its own.
-
Managed RSS feeds are more interesting
i.e., Artima's Ruby Buzz and Java Buzz, Planet PostgreSQL and so forth.
Of course, those become less valuable when folks add RSS feeds that aren't specific to the topic, so that Java posts show up in the Ruby feeds and all that. That can be tricky too, though; does this post go under Jabber or PostgreSQL? Dunno. -
Managed RSS feeds are more interesting
i.e., Artima's Ruby Buzz and Java Buzz, Planet PostgreSQL and so forth.
Of course, those become less valuable when folks add RSS feeds that aren't specific to the topic, so that Java posts show up in the Ruby feeds and all that. That can be tricky too, though; does this post go under Jabber or PostgreSQL? Dunno.