People keep telling me this, but where's PHP's threading implementation? You're going to have a pretty limited range of GUI apps if every application can only have a single thread of execution.
That's great and all, but what happens when you are working with code that several programmers have worked on, all of which have different tab settings and some of which used spaces, some used tabs.
Easy: the code won't run. Python doesn't try to guess between which two you're using, it more than likely just plain won't run.
From the moment you start writing Python code you should be aware that whitespace is a part of the Python grammar - just like curly braces are part of the C/C++/Java/Perl grammar, just like brackets are part of the scheme/lisp grammar. As such, you need to be aware that when you write Python code: white space matters.
People complain about this all the time, but they're usually people who've had extremely limited experience with Python.
Python is fine for small jobs, but it doesn't work as well for larger jobs.
This sucks in a way, because you'll only ever discover this at runtime (i.e. Python's compiler doesn't see this IIRC, only the interpreter) but because Python makes no assumptions about the existence of a variable before it's required, it's not really possible to check this at runtime.
If you misspell a variable somewhere in Python, you must end up with two variables or something. It looks ridiculous.
That's an uninformed rebuttal.
If you misspell a variable name in Python for anything but an assignment, you'll get a runtime error. This sucks in a way, because you'll only ever discover this at runtime (i.e. Python's compiler doesn't see this IIRC, only the interpreter) but because Python makes no assumptions about the existence of a variable before it's required, it's not really possible to check this at runtime.
It has the potential to cause issues in multithreaded code, but outside of that it rarely causes me any problems.
And no type checking, my god, are they honestly trying to help programmers or not? I don't understand Python, I guess.
So, uh, where's Perl's type checking? Carp::Ensure is the closest I've seen, and it's nothing that couldn't be done in Python - it's more like assert () with introspection.
* Nice syntax: Not perfect, but very passable overall.
I agree.
* Love the no-brackets: Indentation as a means of delineating code blocks is great; there's no debate over where to put squiggly braces (the 'if test { statement; } stuff;
This would save me from so many religious debates regarding other people's opinions of how my curly braces should be placed, it's just not funny.
* Immature toolsets: there are very few mature toolsets yet. We're using SQLObject, which is in version 0.6, as an object-relational-mapper. It's got some limitations and is admittedly not 'enterprise ready'. it's hard to compare to the Perl DBI because the dbi just is an interface and doesn't do mapping.
I've also found this to be the case, and I'm honestly surprised there isn't a more powerful object-relational data access framework for python. Even the basics of Hibernate would be great.
* Lack of CPAN: the single most fantastic "tool" I've found in my programming career (15 years) has been CPAN. Got a problem? Someone has probably already seen it and started a solution. I know this is in the works for Python but the tools are not all there yet.
I too look forward to something similar to CPAN for Python. Hopefully it's more useful than PEAR though (for which I've only ever found a use for two or three libraries)
* Syntax (bad): Lack of a requirement to declare vars before use. I really would like the ability to require that all vars are explicitly declared before being assigned to. it would help coding reliability.
To me, this would sort of be a waste of time - I mean, how do you suggest that would work? Something like:
var name name = 'Bob';
? Python is dynamically typed, so declaring "name" gives us no further information about the variable "name" other than the fact it exists (which is pretty well obvious just by looking at the assignment). I sort of see where you're coming from, but I don't think this sits well in a dynamically typed language - which is why you don't see it in PHP, Ruby or Perl. You can do something like:
my $var;
in Perl, which is only necessary because everything's a global in Perl unless you explicitly say otherwise (which is nasty, IMO).
One thing I could see a use for is automatic runtime type checking, but that's a whole other post.
Chances are, the college has some form of student union, and student unions typically have access to legal counsel for when students get in trouble. I think this would qualify.
Interesting thought: I've heard talk over here (Australia) of the mandatory University Guild Fee paid by every student begin made an optional contribution. Obviously, without this contribution student unions will be somewhat crippled.
Without these mandatory contributions, there may very well be no more free legal counsel - and as a result, students will be open to threats from the music and movie industries and will be much more inclined to cough up rather than seek legal counsel. This age group will be one of the most prominent groups of copyright infringers, so they stand to make a lot of money in the form of "micropayment" style settlements.
I could be wrong - the legal counsel may simply advise them to settle and be done with it - but it's an interesting conspiracy theory all the same.
At the moment, the support for abolishing this mandatory contribution is quite large and it's only the people directly involved with the guilds who are (predictably) kicking up a stink. But this could very well prove to be a terrible thing in disguise for many students.
When Red Hat earns that kind of profit, then Microsoft might switch.
Well, that will never happen then. The big money in Open Source is always going to be made through services rather than software. If Microsoft open sourced office and windows, they'd have to suddenly completely change their business model.
It would be a stupid idea business idea from anybody's perspective.
LOL... using GLib doesn't make your code object oriented dude. What you've got there is plain old vanilla C.
Not that I disagree that using C to write OOP is possible, that's just a non-example of C OOP.
You'd be much better of demonstrating how to derive your own type from GObject & GObjectClass. Google for "gobject tutorial" for some ideas.
Personally I think it's all a bit convoluted and you're better off just using vanilla ADTs over custom gobject types where possible - there's just too much overhead. But that's just my opinion.
I started looking into Ruby on Rails late last night and from first impressions, I think you might be right.
I've been working on a time tracking system for keeping track on work I do for clients etc. It took me over two hours to get the basics up and running with PHP (I've been a PHP developer for six years, four commercially).
It took me ten minutes to do essentially the same thing in Ruby on Rails with no prior Rails experience and minimal Ruby experience.
It's just a toy application at the moment, but Rails has sold me on Ruby as a rapid prototyping language for the web. With a little more prodding around to make sure it's this powerful for larger projects, it may very well become my language of choice.
So... if anybody in the know is out there, what's this release like? How buggy is it? What's the worst-case scenario if I start using it?
It's not even a beta yet. As far as stability goes, you shouldn't be surprised if it eats both your children and your dog.
It may work wonderfully for you, but again: it's a _BETA_. The people at OO.org can't really guarantee you anything because the point behind most beta releases is that the release is unstable and needs testing. They do these releases for the purposes of flushing out the hairy bugs that keep people like yourself away from it - if you're scared of it breaking your system, then it's not for you.
"I have been coding in C for a while (10 yrs or so) and tend to use short code snippets. As a simple example, take 'if (!ptr)' instead of 'if (ptr==NULL)'. The reason someone might use the former code snippet is because they believe it would result in smaller machine code if the compiler does not do optimizations or is not smart enough to optimize the particular code snippet.
If I were paying programmers to write code for me, and one such programmer lost sleep over such trivialities, it would be time to start looking for another programmer.
As a programmer, unless specifically dictated otherwise by special requirements or by job title (i.e. your job title is "Pendantic Optimizer of Trivial Instructions"), your job is:
a) Reduce complexity. b) Reduce complexity.
Software is complex. You have enough to worry about without trying to determine how a compiler will optimize down to the level of a single instruction. If you're optimizing for one compiler, you're killing performance for another -there's very little to lose and so much to gain from not trying to optimize at the instruction level during the construction process.
Yes, there is the odd exception to this rule (perhaps speed/size constraints for embedded software, off the top of my head), but man - I couldn't imagine trying to code something worthwhile and worrying about things like this with each and every key press...
If you're a single mother, you made a mistake. I don't support your decision and I think the world would be a better place if abortions were forced upon you. Just the other night I saw on the news a 19 year old girl who had 3 children and was being brought up on child neglect charges. It is simply sickening. Society, as a whole, needs to tell these swine that if you have that many children and that young of an age, you are the scum of the Earth and the planet would be better off without you. I am sick and tired of supporting someone else's mistake. And of course, those 3 children will grow up to either steal my car, have children they can't support just like their mother, or both.
My mother was single.
I don't steal cars and, as yet, I've not had children that I can't support. I'm three units away from a university degree, I work part time as a software engineer and I do a lot of contract work on the side.
And in my opinion, the education system will never teach anybody who doesn't want to learn: whether they have good familes or bad families, it all comes down to the individual.
Honestly, you bitch and bitch like you know what you're talking about.
You don't, it shows: families aren't perfect. You're obviously not in such a situation, so for fuck's sake stop moaning like you're somehow better than these women. You're not. It's not up to you to judge moral values.
I always get offered amazing awards and get congratulated on my brilliant poetry. But, of course, there's a fee if I want to get published/get a prize/etc...
wanted to have sex with herself
mod me up if you too like out of context quotes!
keep annoying and distracting phone calls away
:)
can you say "off button"?
You missed the most interesting part:
Notice, if you're paying attention, even if they comply with the GPL now, they're still in violation of my copyright.
People keep telling me this, but where's PHP's threading implementation? You're going to have a pretty limited range of GUI apps if every application can only have a single thread of execution.
That's great and all, but what happens when you are working with code that several programmers have worked on, all of which have different tab settings and some of which used spaces, some used tabs.
Easy: the code won't run. Python doesn't try to guess between which two you're using, it more than likely just plain won't run.
From the moment you start writing Python code you should be aware that whitespace is a part of the Python grammar - just like curly braces are part of the C/C++/Java/Perl grammar, just like brackets are part of the scheme/lisp grammar. As such, you need to be aware that when you write Python code: white space matters.
People complain about this all the time, but they're usually people who've had extremely limited experience with Python.
Python is fine for small jobs, but it doesn't work as well for larger jobs.
Completely unfounded.
One thing I've never been able to grasp is why Python proponents always mention the fact that whitespace is significant as a good thing.
Whitespace (or more specifically, indentation) significance forces you to make the visual structure of your code match its semantic structure.
This sucks in a way, because you'll only ever discover this at runtime (i.e. Python's compiler doesn't see this IIRC, only the interpreter) but because Python makes no assumptions about the existence of a variable before it's required, it's not really possible to check this at runtime.
That last "runtime" should be "compile time".
If you misspell a variable somewhere in Python, you must end up with two variables or something. It looks ridiculous.
That's an uninformed rebuttal.
If you misspell a variable name in Python for anything but an assignment, you'll get a runtime error. This sucks in a way, because you'll only ever discover this at runtime (i.e. Python's compiler doesn't see this IIRC, only the interpreter) but because Python makes no assumptions about the existence of a variable before it's required, it's not really possible to check this at runtime.
It has the potential to cause issues in multithreaded code, but outside of that it rarely causes me any problems.
And no type checking, my god, are they honestly trying to help programmers or not? I don't understand Python, I guess.
So, uh, where's Perl's type checking? Carp::Ensure is the closest I've seen, and it's nothing that couldn't be done in Python - it's more like assert () with introspection.
Who in the 90's writes a language where whitespace has meaning???
Somebody who realises the importance of the semantic structure of program source code.
* Nice syntax: Not perfect, but very passable overall.
I agree.
* Love the no-brackets: Indentation as a means of delineating code blocks is great; there's no debate over where to put squiggly braces (the 'if test { statement; } stuff;
This would save me from so many religious debates regarding other people's opinions of how my curly braces should be placed, it's just not funny.
* Immature toolsets: there are very few mature toolsets yet. We're using SQLObject, which is in version 0.6, as an object-relational-mapper. It's got some limitations and is admittedly not 'enterprise ready'. it's hard to compare to the Perl DBI because the dbi just is an interface and doesn't do mapping.
I've also found this to be the case, and I'm honestly surprised there isn't a more powerful object-relational data access framework for python. Even the basics of Hibernate would be great.
* Lack of CPAN: the single most fantastic "tool" I've found in my programming career (15 years) has been CPAN. Got a problem? Someone has probably already seen it and started a solution. I know this is in the works for Python but the tools are not all there yet.
I too look forward to something similar to CPAN for Python. Hopefully it's more useful than PEAR though (for which I've only ever found a use for two or three libraries)
* Syntax (bad): Lack of a requirement to declare vars before use. I really would like the ability to require that all vars are explicitly declared before being assigned to. it would help coding reliability.
To me, this would sort of be a waste of time - I mean, how do you suggest that would work? Something like:
var name
name = 'Bob';
? Python is dynamically typed, so declaring "name" gives us no further information about the variable "name" other than the fact it exists (which is pretty well obvious just by looking at the assignment). I sort of see where you're coming from, but I don't think this sits well in a dynamically typed language - which is why you don't see it in PHP, Ruby or Perl. You can do something like:
my $var;
in Perl, which is only necessary because everything's a global in Perl unless you explicitly say otherwise (which is nasty, IMO).
One thing I could see a use for is automatic runtime type checking, but that's a whole other post.
Chances are, the college has some form of student union, and student unions typically have access to legal counsel for when students get in trouble. I think this would qualify.
Interesting thought: I've heard talk over here (Australia) of the mandatory University Guild Fee paid by every student begin made an optional contribution. Obviously, without this contribution student unions will be somewhat crippled.
Without these mandatory contributions, there may very well be no more free legal counsel - and as a result, students will be open to threats from the music and movie industries and will be much more inclined to cough up rather than seek legal counsel. This age group will be one of the most prominent groups of copyright infringers, so they stand to make a lot of money in the form of "micropayment" style settlements.
I could be wrong - the legal counsel may simply advise them to settle and be done with it - but it's an interesting conspiracy theory all the same.
At the moment, the support for abolishing this mandatory contribution is quite large and it's only the people directly involved with the guilds who are (predictably) kicking up a stink. But this could very well prove to be a terrible thing in disguise for many students.
When Red Hat earns that kind of profit, then Microsoft might switch.
Well, that will never happen then. The big money in Open Source is always going to be made through services rather than software. If Microsoft open sourced office and windows, they'd have to suddenly completely change their business model.
It would be a stupid idea business idea from anybody's perspective.
LOL ... using GLib doesn't make your code object oriented dude. What you've got there is plain old vanilla C.
Not that I disagree that using C to write OOP is possible, that's just a non-example of C OOP.
You'd be much better of demonstrating how to derive your own type from GObject & GObjectClass. Google for "gobject tutorial" for some ideas.
Personally I think it's all a bit convoluted and you're better off just using vanilla ADTs over custom gobject types where possible - there's just too much overhead. But that's just my opinion.
Isn't it great how the music and movie industries can scare universities into policing their laws for them with little more than a few spot searches?
using proper English grammer and spelling.
Do as you say, not as you do?
I started looking into Ruby on Rails late last night and from first impressions, I think you might be right.
I've been working on a time tracking system for keeping track on work I do for clients etc. It took me over two hours to get the basics up and running with PHP (I've been a PHP developer for six years, four commercially).
It took me ten minutes to do essentially the same thing in Ruby on Rails with no prior Rails experience and minimal Ruby experience.
It's just a toy application at the moment, but Rails has sold me on Ruby as a rapid prototyping language for the web. With a little more prodding around to make sure it's this powerful for larger projects, it may very well become my language of choice.
In C++, I can write a sorting algorithm that sorts objects that are not even the same concrete type.
And how is this different from C?
Templates.
So... if anybody in the know is out there, what's this release like? How buggy is it? What's the worst-case scenario if I start using it?
It's not even a beta yet. As far as stability goes, you shouldn't be surprised if it eats both your children and your dog.
It may work wonderfully for you, but again: it's a _BETA_. The people at OO.org can't really guarantee you anything because the point behind most beta releases is that the release is unstable and needs testing. They do these releases for the purposes of flushing out the hairy bugs that keep people like yourself away from it - if you're scared of it breaking your system, then it's not for you.
better you than somebody else :P
In Soviet Russia, bases moon you?
"I have been coding in C for a while (10 yrs or so) and tend to use short code snippets. As a simple example, take 'if (!ptr)' instead of 'if (ptr==NULL)'. The reason someone might use the former code snippet is because they believe it would result in smaller machine code if the compiler does not do optimizations or is not smart enough to optimize the particular code snippet.
...
If I were paying programmers to write code for me, and one such programmer lost sleep over such trivialities, it would be time to start looking for another programmer.
As a programmer, unless specifically dictated otherwise by special requirements or by job title (i.e. your job title is "Pendantic Optimizer of Trivial Instructions"), your job is:
a) Reduce complexity.
b) Reduce complexity.
Software is complex. You have enough to worry about without trying to determine how a compiler will optimize down to the level of a single instruction. If you're optimizing for one compiler, you're killing performance for another -there's very little to lose and so much to gain from not trying to optimize at the instruction level during the construction process.
Yes, there is the odd exception to this rule (perhaps speed/size constraints for embedded software, off the top of my head), but man - I couldn't imagine trying to code something worthwhile and worrying about things like this with each and every key press
I tend to masturbate with my hands, not my brain.
Man, you're missing out.
My supervisor at work probably accounts for about half of all the Australian TV downloads. Absolute champion.
:P
I personally don't see the point: Just go watch the TV for real you fucking nerds!
If you're a single mother, you made a mistake. I don't support your decision and I think the world would be a better place if abortions were forced upon you. Just the other night I saw on the news a 19 year old girl who had 3 children and was being brought up on child neglect charges. It is simply sickening. Society, as a whole, needs to tell these swine that if you have that many children and that young of an age, you are the scum of the Earth and the planet would be better off without you. I am sick and tired of supporting someone else's mistake. And of course, those 3 children will grow up to either steal my car, have children they can't support just like their mother, or both.
My mother was single.
I don't steal cars and, as yet, I've not had children that I can't support. I'm three units away from a university degree, I work part time as a software engineer and I do a lot of contract work on the side.
And in my opinion, the education system will never teach anybody who doesn't want to learn: whether they have good familes or bad families, it all comes down to the individual.
Honestly, you bitch and bitch like you know what you're talking about.
You don't, it shows: families aren't perfect. You're obviously not in such a situation, so for fuck's sake stop moaning like you're somehow better than these women. You're not. It's not up to you to judge moral values.
People make mistakes. Life goes on.
Sounds like poetry.com :P
...
I always get offered amazing awards and get congratulated on my brilliant poetry. But, of course, there's a fee if I want to get published/get a prize/etc