Agree. I'm always being told how wonderful/portable it is but every time I try to run a Python program I get "wrong version" or something.
Chapter 0 of the book has "Make sure you install Python 2 not Python 3.". Uhuh, there's a language I want to invest some time in. Not.
Is there a reason why the language designers didn't put some kind of versioning into their language when they took the decision that backwards compatibility wasn't important to them? Some sort of shebang on the first line with the version number...? It's not difficult.
The other setup advice, ie.:
Open Edit->Preferences select the Editor tab.
Change Tab width: to 4.
Select (make sure a check mark is in) Insert spaces instead of tabs.
Turn on "Automatic indentation" as well.
Doesn't inspire me to learn Python either. Why impose a rigid spacing structure on a language in a world where tabs aren't standardized (and never will be)?
That's only the convention the author is using. Python spacing rules are more flexible than that. If you wanted to really know them you could have googled it a long time ago. As for the rationale (again, google it?) it does make up for much readable code. I know that for some it is an idea that they cannot stomach, but readability as part of the syntax is a good think.
And as of why, have you ever had to face code with horrendous indentation or no indentation at all? Specially when people mix code with markup (oh the atrocity)? If you haven't then either you have been a lucky bastard always working with the best of programmers in eternal bliss, or you don't have much work experience at all. Newsflash: most programmers suck at writing readable code. And no, sometimes you cannot run a formatter on source code to fix the damned thing (for political and sometimes even technical reasons.)
In times like these (which are far more often that one would wish), you do end up wishing for some sort of readability function as part of the syntax.
Brackets (or whatever) aren't difficult.
And yet people still fail at writing readable code blocks and scopes with them. For that matter, if it compiles it's great, even if it is impossible to read.
I grok that Python is great for I'm-too-busy-to-learn-a-proper-language programmers to knock batch scripts together quickly but it's not a language for serious work (ie. programs that take more than a day or so to write).
It is the premier language for scientific computation and game scripting. And it has been used quite successfully in the enterprise - even if it hurts you - for writing complex applications. At this point you are just trolling and pulling arguments out of thin air just to justify your dislike for the language. I mean, it is your right to like or dislike as you please. Just don't pretend that you are being accurate, educated or objective about it.
Perhaps we wouldn't have so many economic troubles if we questioned our leaders more often...
And perhaps we wouldn't have so many economic problems if instead of always blaming "the man", we took responsibility for not being a savings culture, living always on credit and always ready to jump into the next speculative thing (the dot-com, trading, real-state, blah blah) and never caring for our own education and manufacturing capabilities because rar rar we are USA we rock, them Chinamen and dot-injuns are too neolithic to take mah jawb.
Stop putting all the blame on leaders. Yes, they have a responsibility for this mess, but so do we, common folk, Our work and education ethos is a f* up one, and we are not innocent bystanders in this crapfest.
If we had competent courts rather than a mockery of a court system run by corrupt "lawyers" and bribed/senile judges, those provisions would long ago have been declared unconscionable and therefore unenforceable anyways, much like "non-compete clauses" have routinely been found unconscionable.
It couldn't possibly be worse than Facebook. With Google's transparency with privacy, and already working business model (has facebook ever posted a profit?), I'd trust them over Facebook in a heartbeat.
Facebook screws me over daily. No, I don't want any facebook credits. No, I don't want to play farmville. Disgusting...
And yet you still use Facebook, daily?
Do I have a choice? Co-workers/Friends (use the term "friend" losely) get insulted if I don't "like" or comment on their inane ramblings at least 3-4 times a week.
How old are you, 15? Grow the hell up. If they get insulted, that's their problem, not yours. Or better, yet, just accept and ignore forever thereafter. If you can't do this online, chances are you cannot do the same in real life... and that's a behavioral problem right there.
First. You can always delete your account. It's not like you are using it with gun in your head. I use facebook to stay connected with family and friends across the states and overseas. For twitter, I use it to follow up colleagues and very specific peoples and topics. Linkedin, as a good Rolodex for job-related contacts. Inevitably I get invites from people I deal with everyday that are not friends or colleagues. I typically accept them and ignore what I don't want to see/deal with it (or simply ignore the request... which surprisingly doesn't affect my sleeping patterns one bit!!! Hahaha!)
When it comes to facebook, it's not like a "farmville" invite is something that is right there between my door and my car, and I can't fucking turn the ignition and go to work or go to the toilet and take a dump until I finally click the accept button. Just fucking ignore it. That's what I do, even if it is from my beloved cousins.
Seriously, this is such irrelevant minutia, that the only annoying power it has over you it's the one you give it to it. It's not rocket science man. These are just little, irrelevant stupid things of no consequence at all.
Similarly, I have friends of mine who simply don't do facebook, and guess what?? They live well, and guess what else, their friends that have a facebook account actually interact with them (and viceversa) by other means. Mind boggling, ain't it.
Facebook is just a tool, and you get what you put (or do not put) in it. You can delete it at any time. You can exclude or include people to see your info as you wish, and you can subscribe and ignore shit you like or don't like.
To claim that you use it daily while at the same time annoy is just retarded. Either delete it, or grow up a little and don't let irrelevant e-shit annoy you.
You can delete
Again, it's not like
I'd recommend a compiled language with exception handling. I feel that makes it a little harder to get stuck/frustrated without any clues. The compiler keeps syntax in check. Exception handling gives a better clue as to why something is failing at run time. Of the major languages, I'd take either Java or c#. Eclipse or VS express, both solid and free IDEs. There are also tons of structured "learn this language" tutorials. Most also start with console apps which are a good place to start. I'd lean towards VS because I prefer visual studio. But from the academic value point of view, I don't see any notable difference between c# and java for the beginner. Obviously you'd go for Java if you're on a mac though.
Contrast that against something like javascript. It can be damn near frustrating trying to understand the DOM, the CSS inheritance, etc. That and simple syntax errors can prevent methods from loading, etc. Sometimes too much simplicity leaves a beginner without any sort of help. That doesn't even touch on browser compatibility.
^^^ Proficiency projection.
Exception handling is yet another abstraction layer that a beginner has to get. All you need, when errors come in, is to get a sigfault and a line error. Better, yet an interpreted environment (like the old QuickBasic) that takes to the line where it blows up, or simple IDEs like the old Turbo Pascal that allows you to debug (and as well, take you to the line where it blows up.)
The less abstractions the better. If it were true that a more complex system with exceptions were better, then we would have much better programmers now, wouldn't? As it is, that is not the fact. And the fact that we have to stop and wonder if our modern tools (all exception-equipped) are good for teaching the basics to beginners indicates that there is something amiss.
Also, there is nothing wrong with having lawyers and accountants. Or what, do you think the legal system runs on its own? That there is no need for accounting? Seriously, where the hell do you people get your impressions about life?
Not necessarily. Johnny could be a diamond in the rough, but thinks that programming is hard and pointless. By giving him a rewarding goal that shows results quickly, he might discover that he actually has a talent and a passion. It worked for me - I only learned to program so that I could hack Netrek, and now I do some fairly deep fu.
Remember, we're competing for Johnny's heart and mind. Would we rather that he became a lawyer, or an accountant?
Point me to one great programmer, or physicist or mathematician or musician or whatever-specialist that was good, if not great despite the fact that he found his subject of interest hard and pointless? Great practitioners seek that which is hard and they never need to be coerced into seeing that which they seek as not being pointless. This is not empty rhetoric (while your proposition is.) This is how mastery of something works.
It is a natural talent. It can be guided, assisted or supported. But it cannot be created out of the vacuum for someone who is not talented and that. And the great American Failure is to think that everyone can be talented at everything if just they get polished a little into the right direction. It flies in the face of human experience, and it is a complete denial that talent for something is scarce, not general, and that there are people who will not be talented, or even efficient at anything.
Instead of wasting time trying convince kids into going into programming by what is nothing more than shinny gimmicks, we should be 1) improving the overall quality of general education and 2) providing kids with vocational education opportunities (as in the German/Japanese models of education) early on.
Bullshit. Jina can code just as well as Johnny if not better, and he doesn't have the elitist "I'm always right because I studied design theory for four years" attitude. That's the problem.
I had played around with coding myself, but really learned first at Stanford. The thing is after returning to Japan I went to a specialty school that didn't even have an entrance exam - anyone can attend, and had to re-learn everything during the first year. I thought this would be worthless, but I quickly found out I had been taught how to code very poorly. You could easily draw parallels from programming education to math education in America vs math education in Japan or India.
I'm sure I'll get marked flamebait for all of this, but from my personal experiences both learning to code and working with other coders from America, Japan, and India I can tell you I'd probably never choose to partner with an American coder over an Indian or Japanese. Drop the attitudes and learn from those who in reality are doing it better than you.
Bullshit. I've been to Japan, and there are good developers and bad developers there. Same with the Johnnies here in America. Same with the Jinas in India... oh, I've so have had to deal with the bad offshore coders from India, it's not even funny. The good ones aren't get paid peanuts, and many of them actually come to study or work here.
Again, there are good and bad developers in any random country of your pick. You know that, so don't give me this shit you are trying to feed us. You have a point on the deficiencies in math education at pre-collegiate levels, but are you going to tell me that there are marked college-level mathematics deficiencies here? Marked to the point that they are substantially detrimental?
Your experience in Stanford is pretty much that, a personal experience. What courses you took? Under what conditions? What specifically did you learn badly at Standford? And assuming that all of that is true, how do you take that personal experience at a specific university (and elite one mind you) into a accurate generalization of software development and CS education in the US? And for that matter, how do you take your own personal experience at that particular specialty school in Japan and turn it into an accurate generalization of software/CS education in that country?
Here is a xkcd cartoon to you. Maybe it will give you some insight into the flaws of your argument.
Proper utilization of lambdas and closures pretty much make a lot of design patterns (template, strategy, visitor, for example) unnecessary in many contexts.
I love lambdas but I don't have a lot of experience using them in large projects. I use the Visitor pattern a lot so I'm really curious to learn how lambdas can be used to avoid it. Can you post an example? Thanks!
Every replacement has to be done in a case by case basis. Not all instances of those patterns can be replaced with lambdas.
Using the visitor sample from here, one could do the following (trivial example, I know):
class ConcreteVisitorB extends AElement{ void VisitConcreteElementA(ConcreteElementA & a ){ a.operationA(); } }
class ConcreteElementA extends AElement { public void accept(AVisitor v) { v.VisitConcreteElementA(this); }
public void operationA() { // an atomic, intrinsic opertion on ConcreteElementA objects. } }
can be replaced with this:
auto lambdaA = [](ConcreteElementA & v ){ v.operationA(); } auto donothing = [](AElement & v) {/* yo! nothing here */ }
class ConcreteElementA extends AElement { public void accept( [](AElement & v ) { v(this); }
public void operationA() { // an atomic, intrinsic opertion on ConcreteElementA objects. } }
Obviously this is a trivial example. For real-world examples, one has to make an engineering decision of whether to replace a particular pattern or composition construct with a lambda, depending on a lot more factors than just coding aesthetics.
Yes, we had functors before, but now you neither need to define functors classes/structs defining 'operator()', nor have to invoke new on them. That is substantially less typing to achieve the same without loss of generality, semantics or performance.
And you save even more typing because the damned things are almost impossible to comment properly.
I'm being a bit facetious, as I think any industrial-strength programming language ought to have lambdas, but I think they are far more useful to library and algorithm developers than application developers.
I disagree. One of the last projects I worked with (Java, not C++, however) we had to pass n anonymous "transformer" objects that would operate on data pulled from a database, n and the actual transformations dependent on particular conditions. For all cases where n > 1 this was hideous as we did not have lambdas in the 1.5/1.6 version of the language. Everything else in the application worked and looked wonderfully except where we have to create/add anonymous "transformers". Lambdas would have been extremely useful here, in application development.
Other examples have been with common exception handlers (which without lambdas, is incredibly hideous) or event listeners in GUI development. With other JVM languages that support lambdas (say, Groovy or Mirah), this type of library and application development work is trivial and elegant (ergo, less prone to bugs.)
Same applies to any language that does not support lambdas. Once you have them, anywhere where you have to structure your class hierarchy to include composition with the purpose of refining/extending pieces of an algorithm, that's a possible (possible, not certain) candidate for being replaced with a lambda.
I've been on both sides of that divide, and while I grant lambdas are useful and elegant, I've also seen them used in entirely inappropriate ways by application developers that have made their work hard to understand and even more difficult to debug.
For example, while g++ mostly supports the new standard I'm pretty sure gdb doesn't allow you to set a breakpoint in an anonymous function. Until it does I would say they have no place in application development, or only under the most draconian coding standards that prevent the kind of unpleasantness you get when a junior developer realizes all the kewl stuff they can do with them.
Hmmm, but that argument can be made with any other programming language construct or syntactic sugar in any programming language and in any context. Everything is open to abuse by the inexperienced or incompetent. There is a valid assumption about the level of competency that one must expect from developers. If they fail at that (and create abominations with a programming language, or a programming language feature), that's more a failure on the developers than on the design of the language.
Case in point, Gosling is still adamant about removing operator overloading from Java because "it's dangerous". And that is a stupid thing to say. Really, it really is. Yes, it can be open to abuse. But then again, that's why, in Java, we have to do this abomination:
// assume a, b and c and d are BigDecimal, do d = a^2 + 2*b + c;
d = (a.pow(2)).add( b.multiply(2) ).add( c );
Would love to use these features in the new C++,...
Why? What is it about these new features that will make your job easier, your code more reliable, and easier to be maintained? Or do you just want to use those features because they're "new" - for C++ that is?
As a long time C++ guy (Borland C++ days), I look at some of these features and think "so what?" (Lambda functions, please.) I'll probably never use them. IMHO the last truly useful feature that C++ added was Templates which lead to the STL and made my life much easier... I stopped reading at this point....
Let me stop you right there for a second. Proper utilization of lambdas and closures pretty much make a lot of design patterns (template, strategy, visitor, for example) unnecessary in many contexts. This obviously will have an impact in how you write/use templates. Furthermore, lambdas and closures help with shrinking class hierarchies even further than delegation alone.
Yes, we had functors before, but now you neither need to define functors classes/structs defining 'operator()', nor have to invoke new on them. That is substantially less typing to achieve the same without loss of generality, semantics or performance. We know from industrial evidence across multiple programming languages (or you should know) that this type of facility, when used properly, reduce complexity and the introduction of new bugs. It helps you focus more on the algorithms at hand without worrying about the boiler-plate that it is needed for its setup.
.
This might look trivial in contrite pedagogical examples such as the one found in the wiki section of C++0x#lambdas found here. However, with real algorithms, one typically have to employ more than one functor. That's where the brevity of lambda expressions pay.
What is happening to you is that you have never done actual work with a language that supports lambdas. And as such, you cannot even imagine how these thing alone (when used appropriately) make code cleaner, and more bug-free.
In the end, you will know this until you use them in work/real-life scenarios. Until then you only have an opinion based on subjective feelings, not from-the-trenches facts. Give them a HONEST, laborious, nontrivial try, if not in C++ at least in some other, non-trivial work on another programming language, and try the same algorithms without them.
After the exercise, you might still think they are useless (and I would still think you are wrong). But at least you will have a hands-on basis for your opinion (as opposed than just puffed air.)
they don't create anything. they move money around and call it work. it's not work, it's gambling
1. rethorical nonsense != understanding of economics and the nature of work.
More importantly...
2. generalizations != facts.
On generalizations, you can't equate an exec from, say Lehman or Enron to an exec at any randomly picked company simply because it fits the nice black-and-white ideological pigeonholes that make up your thinking process. Unless you have actual facts about the execs @ skype, you are simply talking emotionally-driven, subjective rethorical shit.
I know this is/. but c'mon, this is worse, more pathetic and intellectually barren that emo teen angst after watching Dawson Creek.
So science should be ignored, as it never deals with proof. Kinda hypocritical as you're reading this on a computer. So it seems you accept science when you want to, and dismiss it as sensationalist bullshit when it suits you. You also seem to have a very perverse idea about climate science and the scientists involved in that field. Which in itself is strange, as your actions ("fuck it - it's wrong") would only be a valid position if you had a solid understanding of of this field.
I'm not sure exactly how you got to this from what harryturtle777 wrote. Seriously.
The problem with past analogies is that none of these transitions occurred in any planned manner at all. If the government is suggesting to intervene with planned economic transition (supposedly for the better), then a reasonable and workable transition should start (or include) with the training of our blue collar workforce.
Suggesting to increase the number of engineers without considering the former is not a solution. In fact, it has the potential to worsen the status quo by elevating the middle class barrier of entry to those possessing at least one college degree while polarizing the workforce into them and an underprepared blue-collar underclass (which we are already seeing it.)
If we are going to engage in social engineering, we should at least try to do it right.
Moreover, how the hell are we going to increase the # of engineer graduates per year? By lowering standards and barriers of entry? Because that's the only way to do so in a quick manner and without addressing social issues that stops people from seeking a STEM degree (social perceptions, etc) and prevents people from succeeding (due to subpar pre-collegiate education.)
To suggest to increase the number of engineers is as impossible as suggesting to increase the number of doctors, or musicians or painters, not unless quality is lowered.
There's tons of manufacturing in the USA. It mostly falls into 2 categories: highly specialized skills required, non-bulk items (Boeing), or highly automated processes to reduce the number of workers (car companies, coke, Ikea). One of the things a lot of the engineers work on is getting factories that can get rid of the workers to create a cheaper, more consistent product.
Yes, there are tons of specialized/robot-based manufacturing capabilities in the USA. That does not equate to competitive manufacturing capabilities in general. It helps no one to continue increasing the number of engineers that can help with specialized manufacturing and automation if the main bulk of production with which to employ our blue collar work force slides more and more into the realm of the non-existent.
From what I know of China and Europe, and from what I've personally withnessed in Japan, every industrialized country understand this (to cultivate a blue collar manufacturing work force.) We do not.
Having a ton of specialized manufacturing capabilities without having a manufacturing base or a trained blue collar is not a sustainable solution, at least not for the blue collar sector of our society.
'We've made incredible progress on education, helping students to finance their college educations, but we still don't have enough engineers,' said Obama.
What a load of crap.
What's the point of producing more engineers if we don't develop a well-trained blue-colllar workforce and a manufacturing industry for them to work on it? How's the economy going to absorb them if it cannot absorb its unemployed blue collar guys?
We are losing the engineering battle not for lack of engineers, but for lack of competitive manufacturing capabilities (and incentives to have a manufacturing industry) in American soil.
He's counting on the private sector to help expand the number of graduates.
The same companies that are willing to move jobs overseas (or are pushed to do so because their competitors do)? The US government must provide incentives to companies to retain engineering and manufacturing jobs here (and penalties for those that do not.) China, Japan and India have measures to protect their local economies. We do not. And in fact, the MBA mantra is to not do it at all.
Worry about producing more engineers without tackling the lack of manufacturing competitiveness is like worrying about putting deodorant to smell clean without wiping one's ass crack after taking a dump. Seriously, it is that bad.
I edited wikipedia , to make it hopefully much more neutral. Thanks for the tip.
As for the slashdot story, I believe that Thomas Drake's innocence is not opinion. I believe that it is a fact.
In that case, express it as a opinion (that YOU believe it is a fact) instead of putting it as a fact (as a legal judgement) being reported in the media and in the references you previously provided (none of which made that statement.) I do believe the man is innocent as well, but there has been no legal judgement expressing so. And none of the references you made in the media claim "innocence" as a piece of news.
You misrepresented (pretty much lied) the statements made by NPR and other news outlets to prop out your opinion (which I think is right.) That's dishonest. When you submitted your article to/. , you should have said very clearly:
1. NPR and other news outlets broke the news that Mr. Drake's case has been dropped in exchange for pleading for a much minor charge, and that he won't face jail time.
2. That YOU, based on x, y, z or whatever, strongly believe in Mr. Drake is innocent.
And then you should have refrained from putting #2 on the wikipedia entry because that has never been wikipedia's purpose (even if a million dishonest slimeballs do so on a daily basis.)
If you still don't get this and why, you are still a dishonest slimeball independently of what you believe about the case. It's not just your beliefs that define you, but also your actions.
http://en.wikipedia.org/wiki/Talk:Thomas_Andrews_Drake
Notice that the wikipedia entry for Mr. Drake states that "he was found innocent" even though Decora has failed to provide a reference indicating of the judgement where the man was found innocent. Also notice in the "talk" section of the aforementioned wiki entry how other editors question the validity of the entries made by Decora, as well as the fact that the entries sound more like opinions of statements rather than facts.
Not that I have anything against Mr. Drake (and I applaud him for being a whistleblower), but there is nothing in the case that indicates a judgement of innocence. It is juvenile, subjective, and pretty much fucking stupid to use both wikipedia and./ to pass an Op.Ed as a statement of historical fact.
Someone (Decora) who tell others to find their own references
you can find that in the various secondary sources im just too lazy to go re-reference them. i am going to edit and put back
in the wiki talk page when confronted with the lack of good reference materials, it someone I would take his words from with a grain of salt.
The reason why tech salaries and job satisfaction are on the decline is because, on average, most IT professionals are good at tech, but not negotiation.
Most? No, they are not. Seriously. A lot are adequate, and possibly a similar amount are utterly incompetent and yet find ways to weasel their way in, flinging shit at the monitor, packaging/deploying whatever sticks. The adequate lot kinda-sorta ameliorate the damage inflicted by the later group, but virtue of being adequate (by not flinging shit at the monitor and packaging/deploying whatever sticks.) But they have their own limitations (in particular by not being one-dimensional.)
To be good in IT, one has to be multi-dimensional (being very good at several things and adequate in others - db admin, sys admin, network admin, coder/software engineering and possibly project management - pick a few in any combination that works.) That's what it takes to be good. Most are not.
BTW, this is not a derision at individuals (except against the shit-flinging code monkeys) but an observation on IT (specially as it's been evolving since the dot-com times.)
"People EXPECT computer systems to crash"....ah, the joys of Windows.
Linux for teh win
Bull. Even Linux-based systems crash (I know.) I'm sure you meant it as a rimshot, but still. People focus too much on OS-level shortcomings when in reality, the greatest expense in IT are due to application-level shittiness, Windows-based, Linux-based or otherwise.
Agree. I'm always being told how wonderful/portable it is but every time I try to run a Python program I get "wrong version" or something.
Chapter 0 of the book has "Make sure you install Python 2 not Python 3.". Uhuh, there's a language I want to invest some time in. Not.
Is there a reason why the language designers didn't put some kind of versioning into their language when they took the decision that backwards compatibility wasn't important to them? Some sort of shebang on the first line with the version number...? It's not difficult.
The other setup advice, ie.: Open Edit->Preferences select the Editor tab. Change Tab width: to 4. Select (make sure a check mark is in) Insert spaces instead of tabs. Turn on "Automatic indentation" as well.
Doesn't inspire me to learn Python either. Why impose a rigid spacing structure on a language in a world where tabs aren't standardized (and never will be)?
That's only the convention the author is using. Python spacing rules are more flexible than that. If you wanted to really know them you could have googled it a long time ago. As for the rationale (again, google it?) it does make up for much readable code. I know that for some it is an idea that they cannot stomach, but readability as part of the syntax is a good think.
And as of why, have you ever had to face code with horrendous indentation or no indentation at all? Specially when people mix code with markup (oh the atrocity)? If you haven't then either you have been a lucky bastard always working with the best of programmers in eternal bliss, or you don't have much work experience at all. Newsflash: most programmers suck at writing readable code. And no, sometimes you cannot run a formatter on source code to fix the damned thing (for political and sometimes even technical reasons.)
In times like these (which are far more often that one would wish), you do end up wishing for some sort of readability function as part of the syntax.
Brackets (or whatever) aren't difficult.
And yet people still fail at writing readable code blocks and scopes with them. For that matter, if it compiles it's great, even if it is impossible to read.
I grok that Python is great for I'm-too-busy-to-learn-a-proper-language programmers to knock batch scripts together quickly but it's not a language for serious work (ie. programs that take more than a day or so to write).
It is the premier language for scientific computation and game scripting. And it has been used quite successfully in the enterprise - even if it hurts you - for writing complex applications. At this point you are just trolling and pulling arguments out of thin air just to justify your dislike for the language. I mean, it is your right to like or dislike as you please. Just don't pretend that you are being accurate, educated or objective about it.
Perhaps we wouldn't have so many economic troubles if we questioned our leaders more often...
And perhaps we wouldn't have so many economic problems if instead of always blaming "the man", we took responsibility for not being a savings culture, living always on credit and always ready to jump into the next speculative thing (the dot-com, trading, real-state, blah blah) and never caring for our own education and manufacturing capabilities because rar rar we are USA we rock, them Chinamen and dot-injuns are too neolithic to take mah jawb.
Stop putting all the blame on leaders. Yes, they have a responsibility for this mess, but so do we, common folk, Our work and education ethos is a f* up one, and we are not innocent bystanders in this crapfest.
If we had competent courts rather than a mockery of a court system run by corrupt "lawyers" and bribed/senile judges, those provisions would long ago have been declared unconscionable and therefore unenforceable anyways, much like "non-compete clauses" have routinely been found unconscionable.
Emotional-driven generalization != truth.
It couldn't possibly be worse than Facebook. With Google's transparency with privacy, and already working business model (has facebook ever posted a profit?), I'd trust them over Facebook in a heartbeat.
Facebook screws me over daily. No, I don't want any facebook credits. No, I don't want to play farmville. Disgusting...
And yet you still use Facebook, daily?
Do I have a choice? Co-workers/Friends (use the term "friend" losely) get insulted if I don't "like" or comment on their inane ramblings at least 3-4 times a week.
How old are you, 15? Grow the hell up. If they get insulted, that's their problem, not yours. Or better, yet, just accept and ignore forever thereafter. If you can't do this online, chances are you cannot do the same in real life... and that's a behavioral problem right there.
First. You can always delete your account. It's not like you are using it with gun in your head. I use facebook to stay connected with family and friends across the states and overseas. For twitter, I use it to follow up colleagues and very specific peoples and topics. Linkedin, as a good Rolodex for job-related contacts. Inevitably I get invites from people I deal with everyday that are not friends or colleagues. I typically accept them and ignore what I don't want to see/deal with it (or simply ignore the request... which surprisingly doesn't affect my sleeping patterns one bit!!! Hahaha!)
When it comes to facebook, it's not like a "farmville" invite is something that is right there between my door and my car, and I can't fucking turn the ignition and go to work or go to the toilet and take a dump until I finally click the accept button. Just fucking ignore it. That's what I do, even if it is from my beloved cousins.
Seriously, this is such irrelevant minutia, that the only annoying power it has over you it's the one you give it to it. It's not rocket science man. These are just little, irrelevant stupid things of no consequence at all.
Similarly, I have friends of mine who simply don't do facebook, and guess what?? They live well, and guess what else, their friends that have a facebook account actually interact with them (and viceversa) by other means. Mind boggling, ain't it.
Facebook is just a tool, and you get what you put (or do not put) in it. You can delete it at any time. You can exclude or include people to see your info as you wish, and you can subscribe and ignore shit you like or don't like.
To claim that you use it daily while at the same time annoy is just retarded. Either delete it, or grow up a little and don't let irrelevant e-shit annoy you. You can delete Again, it's not like
I'd recommend a compiled language with exception handling. I feel that makes it a little harder to get stuck/frustrated without any clues. The compiler keeps syntax in check. Exception handling gives a better clue as to why something is failing at run time. Of the major languages, I'd take either Java or c#. Eclipse or VS express, both solid and free IDEs. There are also tons of structured "learn this language" tutorials. Most also start with console apps which are a good place to start. I'd lean towards VS because I prefer visual studio. But from the academic value point of view, I don't see any notable difference between c# and java for the beginner. Obviously you'd go for Java if you're on a mac though.
Contrast that against something like javascript. It can be damn near frustrating trying to understand the DOM, the CSS inheritance, etc. That and simple syntax errors can prevent methods from loading, etc. Sometimes too much simplicity leaves a beginner without any sort of help. That doesn't even touch on browser compatibility.
^^^ Proficiency projection.
Exception handling is yet another abstraction layer that a beginner has to get. All you need, when errors come in, is to get a sigfault and a line error. Better, yet an interpreted environment (like the old QuickBasic) that takes to the line where it blows up, or simple IDEs like the old Turbo Pascal that allows you to debug (and as well, take you to the line where it blows up.)
The less abstractions the better. If it were true that a more complex system with exceptions were better, then we would have much better programmers now, wouldn't? As it is, that is not the fact. And the fact that we have to stop and wonder if our modern tools (all exception-equipped) are good for teaching the basics to beginners indicates that there is something amiss.
Also, there is nothing wrong with having lawyers and accountants. Or what, do you think the legal system runs on its own? That there is no need for accounting? Seriously, where the hell do you people get your impressions about life?
Not necessarily. Johnny could be a diamond in the rough, but thinks that programming is hard and pointless. By giving him a rewarding goal that shows results quickly, he might discover that he actually has a talent and a passion. It worked for me - I only learned to program so that I could hack Netrek, and now I do some fairly deep fu.
Remember, we're competing for Johnny's heart and mind. Would we rather that he became a lawyer, or an accountant?
Point me to one great programmer, or physicist or mathematician or musician or whatever-specialist that was good, if not great despite the fact that he found his subject of interest hard and pointless? Great practitioners seek that which is hard and they never need to be coerced into seeing that which they seek as not being pointless. This is not empty rhetoric (while your proposition is.) This is how mastery of something works.
It is a natural talent. It can be guided, assisted or supported. But it cannot be created out of the vacuum for someone who is not talented and that. And the great American Failure is to think that everyone can be talented at everything if just they get polished a little into the right direction. It flies in the face of human experience, and it is a complete denial that talent for something is scarce, not general, and that there are people who will not be talented, or even efficient at anything.
Instead of wasting time trying convince kids into going into programming by what is nothing more than shinny gimmicks, we should be 1) improving the overall quality of general education and 2) providing kids with vocational education opportunities (as in the German/Japanese models of education) early on.
Bullshit. Jina can code just as well as Johnny if not better, and he doesn't have the elitist "I'm always right because I studied design theory for four years" attitude. That's the problem.
I had played around with coding myself, but really learned first at Stanford. The thing is after returning to Japan I went to a specialty school that didn't even have an entrance exam - anyone can attend, and had to re-learn everything during the first year. I thought this would be worthless, but I quickly found out I had been taught how to code very poorly. You could easily draw parallels from programming education to math education in America vs math education in Japan or India.
I'm sure I'll get marked flamebait for all of this, but from my personal experiences both learning to code and working with other coders from America, Japan, and India I can tell you I'd probably never choose to partner with an American coder over an Indian or Japanese. Drop the attitudes and learn from those who in reality are doing it better than you.
Bullshit. I've been to Japan, and there are good developers and bad developers there. Same with the Johnnies here in America. Same with the Jinas in India... oh, I've so have had to deal with the bad offshore coders from India, it's not even funny. The good ones aren't get paid peanuts, and many of them actually come to study or work here.
Again, there are good and bad developers in any random country of your pick. You know that, so don't give me this shit you are trying to feed us. You have a point on the deficiencies in math education at pre-collegiate levels, but are you going to tell me that there are marked college-level mathematics deficiencies here? Marked to the point that they are substantially detrimental?
Your experience in Stanford is pretty much that, a personal experience. What courses you took? Under what conditions? What specifically did you learn badly at Standford? And assuming that all of that is true, how do you take that personal experience at a specific university (and elite one mind you) into a accurate generalization of software development and CS education in the US? And for that matter, how do you take your own personal experience at that particular specialty school in Japan and turn it into an accurate generalization of software/CS education in that country? Here is a xkcd cartoon to you. Maybe it will give you some insight into the flaws of your argument.
Proper utilization of lambdas and closures pretty much make a lot of design patterns (template, strategy, visitor, for example) unnecessary in many contexts.
I love lambdas but I don't have a lot of experience using them in large projects. I use the Visitor pattern a lot so I'm really curious to learn how lambdas can be used to avoid it. Can you post an example? Thanks!
Every replacement has to be done in a case by case basis. Not all instances of those patterns can be replaced with lambdas.
Using the visitor sample from here, one could do the following (trivial example, I know):
can be replaced with this:
Obviously this is a trivial example. For real-world examples, one has to make an engineering decision of whether to replace a particular pattern or composition construct with a lambda, depending on a lot more factors than just coding aesthetics.
Yes, we had functors before, but now you neither need to define functors classes/structs defining 'operator()', nor have to invoke new on them. That is substantially less typing to achieve the same without loss of generality, semantics or performance.
And you save even more typing because the damned things are almost impossible to comment properly.
I'm being a bit facetious, as I think any industrial-strength programming language ought to have lambdas, but I think they are far more useful to library and algorithm developers than application developers.
I disagree. One of the last projects I worked with (Java, not C++, however) we had to pass n anonymous "transformer" objects that would operate on data pulled from a database, n and the actual transformations dependent on particular conditions. For all cases where n > 1 this was hideous as we did not have lambdas in the 1.5/1.6 version of the language. Everything else in the application worked and looked wonderfully except where we have to create/add anonymous "transformers". Lambdas would have been extremely useful here, in application development.
Other examples have been with common exception handlers (which without lambdas, is incredibly hideous) or event listeners in GUI development. With other JVM languages that support lambdas (say, Groovy or Mirah), this type of library and application development work is trivial and elegant (ergo, less prone to bugs.)
Same applies to any language that does not support lambdas. Once you have them, anywhere where you have to structure your class hierarchy to include composition with the purpose of refining/extending pieces of an algorithm, that's a possible (possible, not certain) candidate for being replaced with a lambda.
I've been on both sides of that divide, and while I grant lambdas are useful and elegant, I've also seen them used in entirely inappropriate ways by application developers that have made their work hard to understand and even more difficult to debug.
For example, while g++ mostly supports the new standard I'm pretty sure gdb doesn't allow you to set a breakpoint in an anonymous function. Until it does I would say they have no place in application development, or only under the most draconian coding standards that prevent the kind of unpleasantness you get when a junior developer realizes all the kewl stuff they can do with them.
Hmmm, but that argument can be made with any other programming language construct or syntactic sugar in any programming language and in any context. Everything is open to abuse by the inexperienced or incompetent. There is a valid assumption about the level of competency that one must expect from developers. If they fail at that (and create abominations with a programming language, or a programming language feature), that's more a failure on the developers than on the design of the language.
Case in point, Gosling is still adamant about removing operator overloading from Java because "it's dangerous". And that is a stupid thing to say. Really, it really is. Yes, it can be open to abuse. But then again, that's why, in Java, we have to do this abomination:
Would love to use these features in the new C++,...
Why? What is it about these new features that will make your job easier, your code more reliable, and easier to be maintained? Or do you just want to use those features because they're "new" - for C++ that is?
As a long time C++ guy (Borland C++ days), I look at some of these features and think "so what?" (Lambda functions, please.) I'll probably never use them. IMHO the last truly useful feature that C++ added was Templates which lead to the STL and made my life much easier... I stopped reading at this point... .
Let me stop you right there for a second. Proper utilization of lambdas and closures pretty much make a lot of design patterns (template, strategy, visitor, for example) unnecessary in many contexts. This obviously will have an impact in how you write/use templates. Furthermore, lambdas and closures help with shrinking class hierarchies even further than delegation alone.
Yes, we had functors before, but now you neither need to define functors classes/structs defining 'operator()', nor have to invoke new on them. That is substantially less typing to achieve the same without loss of generality, semantics or performance. We know from industrial evidence across multiple programming languages (or you should know) that this type of facility, when used properly, reduce complexity and the introduction of new bugs. It helps you focus more on the algorithms at hand without worrying about the boiler-plate that it is needed for its setup.
. This might look trivial in contrite pedagogical examples such as the one found in the wiki section of C++0x#lambdas found here. However, with real algorithms, one typically have to employ more than one functor. That's where the brevity of lambda expressions pay.
What is happening to you is that you have never done actual work with a language that supports lambdas. And as such, you cannot even imagine how these thing alone (when used appropriately) make code cleaner, and more bug-free.
In the end, you will know this until you use them in work/real-life scenarios. Until then you only have an opinion based on subjective feelings, not from-the-trenches facts. Give them a HONEST, laborious, nontrivial try, if not in C++ at least in some other, non-trivial work on another programming language, and try the same algorithms without them.
After the exercise, you might still think they are useless (and I would still think you are wrong). But at least you will have a hands-on basis for your opinion (as opposed than just puffed air.)
It's /. after all :/
yes
they don't create anything. they move money around and call it work. it's not work, it's gambling
1. rethorical nonsense != understanding of economics and the nature of work.
More importantly...
2. generalizations != facts.
On generalizations, you can't equate an exec from, say Lehman or Enron to an exec at any randomly picked company simply because it fits the nice black-and-white ideological pigeonholes that make up your thinking process. Unless you have actual facts about the execs @ skype, you are simply talking emotionally-driven, subjective rethorical shit.
I know this is /. but c'mon, this is worse, more pathetic and intellectually barren that emo teen angst after watching Dawson Creek.
So science should be ignored, as it never deals with proof. Kinda hypocritical as you're reading this on a computer. So it seems you accept science when you want to, and dismiss it as sensationalist bullshit when it suits you. You also seem to have a very perverse idea about climate science and the scientists involved in that field. Which in itself is strange, as your actions ("fuck it - it's wrong") would only be a valid position if you had a solid understanding of of this field.
I'm not sure exactly how you got to this from what harryturtle777 wrote. Seriously.
Suggesting to increase the number of engineers without considering the former is not a solution. In fact, it has the potential to worsen the status quo by elevating the middle class barrier of entry to those possessing at least one college degree while polarizing the workforce into them and an underprepared blue-collar underclass (which we are already seeing it.)
If we are going to engage in social engineering, we should at least try to do it right.
Moreover, how the hell are we going to increase the # of engineer graduates per year? By lowering standards and barriers of entry? Because that's the only way to do so in a quick manner and without addressing social issues that stops people from seeking a STEM degree (social perceptions, etc) and prevents people from succeeding (due to subpar pre-collegiate education.)
To suggest to increase the number of engineers is as impossible as suggesting to increase the number of doctors, or musicians or painters, not unless quality is lowered.
There's tons of manufacturing in the USA. It mostly falls into 2 categories: highly specialized skills required, non-bulk items (Boeing), or highly automated processes to reduce the number of workers (car companies, coke, Ikea). One of the things a lot of the engineers work on is getting factories that can get rid of the workers to create a cheaper, more consistent product.
Yes, there are tons of specialized/robot-based manufacturing capabilities in the USA. That does not equate to competitive manufacturing capabilities in general. It helps no one to continue increasing the number of engineers that can help with specialized manufacturing and automation if the main bulk of production with which to employ our blue collar work force slides more and more into the realm of the non-existent.
From what I know of China and Europe, and from what I've personally withnessed in Japan, every industrialized country understand this (to cultivate a blue collar manufacturing work force.) We do not.
Having a ton of specialized manufacturing capabilities without having a manufacturing base or a trained blue collar is not a sustainable solution, at least not for the blue collar sector of our society.
'We've made incredible progress on education, helping students to finance their college educations, but we still don't have enough engineers,' said Obama.
What a load of crap.
What's the point of producing more engineers if we don't develop a well-trained blue-colllar workforce and a manufacturing industry for them to work on it? How's the economy going to absorb them if it cannot absorb its unemployed blue collar guys?
We are losing the engineering battle not for lack of engineers, but for lack of competitive manufacturing capabilities (and incentives to have a manufacturing industry) in American soil.
He's counting on the private sector to help expand the number of graduates.
The same companies that are willing to move jobs overseas (or are pushed to do so because their competitors do)? The US government must provide incentives to companies to retain engineering and manufacturing jobs here (and penalties for those that do not.) China, Japan and India have measures to protect their local economies. We do not. And in fact, the MBA mantra is to not do it at all.
Worry about producing more engineers without tackling the lack of manufacturing competitiveness is like worrying about putting deodorant to smell clean without wiping one's ass crack after taking a dump. Seriously, it is that bad.
Who is still talking about Linux ?
You'd be surprised.
I edited wikipedia , to make it hopefully much more neutral. Thanks for the tip.
As for the slashdot story, I believe that Thomas Drake's innocence is not opinion. I believe that it is a fact.
In that case, express it as a opinion (that YOU believe it is a fact) instead of putting it as a fact (as a legal judgement) being reported in the media and in the references you previously provided (none of which made that statement.) I do believe the man is innocent as well, but there has been no legal judgement expressing so. And none of the references you made in the media claim "innocence" as a piece of news.
You misrepresented (pretty much lied) the statements made by NPR and other news outlets to prop out your opinion (which I think is right.) That's dishonest. When you submitted your article to /. , you should have said very clearly:
1. NPR and other news outlets broke the news that Mr. Drake's case has been dropped in exchange for pleading for a much minor charge, and that he won't face jail time.
2. That YOU, based on x, y, z or whatever, strongly believe in Mr. Drake is innocent.
And then you should have refrained from putting #2 on the wikipedia entry because that has never been wikipedia's purpose (even if a million dishonest slimeballs do so on a daily basis.)
If you still don't get this and why, you are still a dishonest slimeball independently of what you believe about the case. It's not just your beliefs that define you, but also your actions.
Not that I have anything against Mr. Drake (and I applaud him for being a whistleblower), but there is nothing in the case that indicates a judgement of innocence. It is juvenile, subjective, and pretty much fucking stupid to use both wikipedia and ./ to pass an Op.Ed as a statement of historical fact.
Someone (Decora) who tell others to find their own references
you can find that in the various secondary sources im just too lazy to go re-reference them. i am going to edit and put back
in the wiki talk page when confronted with the lack of good reference materials, it someone I would take his words from with a grain of salt.
The reason why tech salaries and job satisfaction are on the decline is because, on average, most IT professionals are good at tech, but not negotiation.
Most? No, they are not. Seriously. A lot are adequate, and possibly a similar amount are utterly incompetent and yet find ways to weasel their way in, flinging shit at the monitor, packaging/deploying whatever sticks. The adequate lot kinda-sorta ameliorate the damage inflicted by the later group, but virtue of being adequate (by not flinging shit at the monitor and packaging/deploying whatever sticks.) But they have their own limitations (in particular by not being one-dimensional.)
To be good in IT, one has to be multi-dimensional (being very good at several things and adequate in others - db admin, sys admin, network admin, coder/software engineering and possibly project management - pick a few in any combination that works.) That's what it takes to be good. Most are not.
BTW, this is not a derision at individuals (except against the shit-flinging code monkeys) but an observation on IT (specially as it's been evolving since the dot-com times.)
"People EXPECT computer systems to crash" ....ah, the joys of Windows.
Linux for teh win
Bull. Even Linux-based systems crash (I know.) I'm sure you meant it as a rimshot, but still. People focus too much on OS-level shortcomings when in reality, the greatest expense in IT are due to application-level shittiness, Windows-based, Linux-based or otherwise.
What is TCP/IP if not telecom?
Maybe because telecom >> TCP/IP?
That's the first intelligent reply on this thread. Sometimes I wonder how drunk the average slashdotter is while posting...
They are not drunk. They are simply stupid and juvenile... even when they are not juvenile anymore.
No company worth their salt will put all the company data "on the cloud" No way in HELL is my customer DB and accounting DB going on the cloud.
http://dilbert.com/strips/comic/2009-11-19/