Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Comments

top

FCC Warned Not To Take Actions a Republican-Led FCC Would Dislike

Calavar Re: Correction: (338 comments)

If you're one of the select few that are so wealthy that you own enough stock to be able to vote out an unpopular CEO (or block a grassroots shareholder movement to do the same), you're either the CEO or his yachting buddy.

about a week ago
top

News Aggregator Fark Adds Misogyny Ban

Calavar Re: Sigh (735 comments)

Yes, and liberals such as myself contend that marriage is a human right. If tolerance means allowing gay individuals to have human rights, then they must have the right to marriage.

about two weeks ago
top

Are Altcoins Undermining Bitcoin's Credibility?

Calavar Re: Not credible enough for merchant's to hold ... (267 comments)

You're missing the point. If Macy's sells a shirt for 50 USD and decides to keep those 50 USD in the bank, are they "speculating on the value of the dollar." Technically yes, but that certainly isn't how Macy's is thinking about it. The USD is is stable enough that holding onto USD is not considered speculation or investment. It is considered saving. That's what it means to be a currency. Until Bitcoin can also act as a medium of savings rather than a medium of speculation and investment, it will not truly be a currency.

about two weeks ago
top

Apple Begins Storing Chinese User Data On Servers In China

Calavar Re:What's the problem... (92 comments)

If this was really about latency, Apple could have kept the servers in Japan or South Korea.

about two weeks ago
top

The Flight of Gifted Engineers From NASA

Calavar Re:Not Surprising (160 comments)

Geez, this is the most idiotic comment I've seen on Slashdot all day, and that's saying something. You couldn't be bothered to do a 30 second web search before implying that Apollo had no benefits?

http://web.archive.org/web/201...
http://m.computerworld.com/s/a...
http://www.the-scientist.com/?...
http://www.consumerreports.org...

Examples from those links: improved dialysis machines, credit card swipes, army field rations, improved building insulation, low recoil/shock rubber, cordless household appliances, cheaper Teflon and Velcro, asbestos-free fire proof textiles, better industrial lubricant, exercise equipment improvents used by pro sports teams, a great deal of insight into how the moons and planets formed, many rocket technology advances used in today's ICBMs and missile defense systems, etc., etc., etc.

Please, next time do five minutes of research before you post something so bonehead with so much conviction.

about two weeks ago
top

Swedish Dad Takes Gamer Kids To Warzone

Calavar Re: Gettin All Up In Yo Biznis (418 comments)

You seriously think the DoD never spent recruiting money on comic books and movies? I'm guessing you never heard of GI Joe then? OrTop Gun? Should we send every kid who likes GI Joe and Top Gun off to Gaza? I liked playing with toy GI Joe fighter jets when I was young. Should my parents have taken me to Kosovo? No, videogames are not any different from movies comics an television. This is just another example of the age old phenomenon of an older generation being afraid of the culture of the younger generation because they don't understand it.

about two weeks ago
top

Maryam Mirzakhani Is the First Woman Fields Medalist

Calavar Re:Is there a need for all these PC things ? (75 comments)

I'm not sure what you're getting at. There have been Chinese and Vietnamese Fields Medalists in the past, but until now there has never been a female Fields Medalist. There has also never been an African Fields Medalist. Both of these are indicators of serious issues. First, sub-Saharan Africa has a total lack of access to higher education (with the exception of South Africa), and second, cultural pressures often dissuade women from pursuing STEM fields in Western nations and prevent them from entering higher education entirely in certain non-Western nations.

You could dismiss these concerns as activism, but that's terribly tunnel-visioned. Every African and every women who for some reason or another has missed out on the opportunity to study STEM is another mind that could potentially have been another Euler or Gauss but was denied the chance. Unless women are intrinsically less adept at math (which I personally do not believe is the case), we've been missing out on half the world's great mathematicians. Could you imagine how different the earth would be today if we had two Fermats, two Euclids, two Poincares? How much knowledge have we lost for the lack of women in math and science? This isn't about "leaving math and science alone" from activism. This is about untapping all the math and science talent that has been hidden away for hundreds of years.

about two weeks ago
top

Patents That Kill

Calavar Re:Absolutely (240 comments)

I found it for you: It was Lord Camden speaking about Donaldson v. Beckett. The full case proceedings can be found at http://www.copyrighthistory.co.... Lord Camden's commentary is quite long, so I won't copy/paste it here, but you can find it on the linked page if you search for "Lord Camden spoke as follows"

about two weeks ago
top

Patents That Kill

Calavar Re:1860 (240 comments)

I know you're trying to point out a supposed grammatical mistake, but yes, the Economist did exist in 1860. A quick Google search suggests that it was in print since 1843.

about two weeks ago
top

PHP Finally Getting a Formal Specification

Calavar Re:Six identifiable bullet points (180 comments)

Look, I don't understand how many times I have to explain this. In Python 1 / 2 is not equal to 1.0 / 2.0, and you are pretending that this has something to do with transitivity. It. Does. Not.

If a=b and c=d then it follows that a/c=a/d

No, it doesn't. Just because it is true when dealing with real numbers in traditional mathematics, doesn't mean it is true in other scenarios. The phenomenon where a=b and c=d implies a/c = a/d, is called substitution, not transitivity, as any damn middle school level text can explain to you: http://hotmath.com/hotmath_hel.... The Python division operation is different from the standard mathematical division operation in that it is not satisfy the substitution property of equality. This has nothing to do with transitivity. Admit it. At this point you are either too boneheaded to understand the difference between division and equality or too stubborn to admit that your are wrong. Whatever the case may be, I'm not going to needlessly expend the energy to argue with you anymore.

about a month ago
top

PHP Finally Getting a Formal Specification

Calavar Re:Six identifiable bullet points (180 comments)

No, you didn't take great pains to point anything out. If you did, you would have said, "and this next example has nothing to do with transitivity, but..." The first half of your post has nothing to do with transitivity either, which I just explained in my response to your other post.

about a month ago
top

PHP Finally Getting a Formal Specification

Calavar Re:Six identifiable bullet points (180 comments)

Look, you are trying to build an argument with a wall of cards, but it simply isn't going to work.

You just told me a/c == a/d and a/d == b/d implies a/c == b/d. That would be an example of transitivity, I grant you that. The problem is that in the example you have, a/c != a/d:

>>> A = 1
>>> C = 2
>>> B = 1.0
>>> D = 2.0
>>> A / C
0
>>> A / D
0.5
>>> A / C == A / D
False

So if a/c != a/d, why in the world would a/d == b/d implies a/c == b/d? Again, don't say "but a/c == a/d in mathematics" because that has nothing to do with transitivity. I never said that a problem with PHP is that division operations don't give you the same result that they would in pure mathematics. I said one problem is that PHP isn't transitive.

about a month ago
top

PHP Finally Getting a Formal Specification

Calavar Re:Six identifiable bullet points (180 comments)

And the second half of your post has nothing to do with transitivity either. In fact, Python is quite transitive in this case: >> 1/3 == 1/2
True
>> 1/3 == 1/4
True
>> 1/4 == 1/2
True
>> 4/3 == 1/2
False
>> 4/3 == 1/4
False
>> 1/4 == 4/3
False

about a month ago
top

PHP Finally Getting a Formal Specification

Calavar Re:Six identifiable bullet points (180 comments)

It seems that you don't understand what transitivity is. Transitivity means that A == B and B == C implies A == C. What you've shown is A == D and B == E does not imply A / D == B / E. Where the hell is the A == B statement? There is none. Instead you are essentially saying A / A is not always equal B / B, which has nothing to do with transitivity. (BTW, this is true even in pure mathematics if A == 0 or B == 0.) Nice try, though.

about a month ago
top

PHP Finally Getting a Formal Specification

Calavar Re:Six identifiable bullet points (180 comments)

Okay, give one example in Python, Ruby, or Lua where the == operator is intransitive.

about a month ago
top

PHP Finally Getting a Formal Specification

Calavar Re:Six identifiable bullet points (180 comments)

As Patman64 already said, it seems that you are the one that is laughably ignorant. PHP and JavaScript are the exception to the rule. Try this in Python:

>>> "0" == "0000"
False

Try this in Ruby

irb(main):001:0> "12" + 2
TypeError: no implicit conversion of Fixnum into String
from (irb):1:in `+'
from (irb):1
from /bin/irb:12:in `'

Try this in Lua

> print(null == 0)
false

It's not as if PHP's hidden casting saves you any effort either. If I actually wanted to compare a string to an int in any of those other languages, it's absurdly simple:

Python:

print(int("150") == 150)

Ruby:

puts "150".to_i == 150

Lua:

print(tonumber("150") == 150)

about a month ago
top

PHP Finally Getting a Formal Specification

Calavar Re:Six identifiable bullet points (180 comments)

What? I'm not defending PHP. I just wrote a two page long post ripping apart a defense of PHP!

about a month ago
top

PHP Finally Getting a Formal Specification

Calavar Re:Six identifiable bullet points (180 comments)

I've read ManiacDan's "hardly" rebuttal, and frankly speaking, it is garbage. Here is my rebuttal to the rebuttal:

Predictable - The author states that it's the language's responsibility to be understood by everyone who uses it, rather than the builder's responsibility to understand their tools.

No, that's a strawman. The the criticism is that languages should facilitate productivity by acting intuitively whenever possible. Language design is to an extent a user interface design for developers. And the number one principle of user interface design is anything that doesn't act the way the user expects it to is broken. (Just ask Joel Spolsky.)

Let's use a little analogy: When you hire an handyman to work on your house, you expect him to know his tools like the back of his hand. You have a choice of two handymen. The first owns a Python powerdrill that has three settings: slow, medium, and fast. The second owns a PHP powerdrill that has twenty-seven different modes. The first mode is very-slow- counterclockwise-drywall-pneumatic, the second mode is medium-slow-clockwise-hardwood-electric, and so on. Which handyman is going to be able to finish the product more quickly. Well, it depends. If the Python handyman doesn't know the basics of Python, he'll do much worse than PHP handyman. But if the PHP handyman and the Python handyman are both equally competent, the Python handyman will be three times faster: because the Python drill is so much simpler, the Python handyman will be able to a lot of his work purely on instinct, but the PHP handyman will have to employ his full cognitive capacity even for the simplest tasks.

Consistent

ManiacDan concedes this point, so I won't write on it here.

Concise - He makes statements about "boilerplate" a number of times, but never defines the term or tells us what he's talking about. PHP is very concise. It includes time-saving functions like usort(), file_get_contents(), and other functions which in C++ would take pages of code.

I am a diehard C++ fan, but even I'll admit that calling a language "concise" because it's less verbose than C++ is laughable. Would you call a slug a sprinter because it is faster than a snail? I mean seriously, what is this nonsense? A language is concise because it has a built in sort function? I could write a sort function in assembler and reuse it in all my subsequent programs, but that doesn't make assembler concise. You want something concise? How about something like Python's list comprehensions? How about a null-coalescing operator a-la C# or Ruby? How about using Ruby style blocks for iterating and callbacks? How about C++-style RAII or Java-style "finally" for avoiding tons of if-else statements to release resources after an exception?

He lists error-checking as boilerplate. I don't know how Python handles it, but generally as a programmer I'd like to know if a file operation failed.

Oh, now it makes sense. The only way someone would defend the mire of if-elseif-else error checking in PHP would be if they were ignorant of a better way.

Reliable - This, again, is him assuming that it's the language's responsibility to be understood, rather than his responsibility to understand it. He goes into what he considers "gotcha" events later in the article, but (spoiler alert) they all stem from his fundamental understanding of the language.

No, ManiacDan, he understands the == statement perfectly, as you can tell from his meticulous list of instances when == is not transitive. In fact, he understands it so well that he knows that it is complete BS. A web language needs an eye for security, but only in the mother of all of web-languages PHP can you compare two password hashes using "==" and have the result be "true" even if the hashes are different. But we should use "===", you say! Great. Now tell me how easy it is to have an "==" mixed up with an "==" somewhere a hundred thousands lines of code. And this is on top of the "="/"==" mixups that are already prevalent in many C-style languages.

Debuggable - Now this I'll give him. PHP's error handling is atrocious. I mean, look at the errors some of these new users are getting on DevShed.

I'm starting to wonder if ManiacDan even knows what a debugger is. I'll give him the benefit of the doubt though. Yes, PHP's error messages are atrocious.

Arguments - However, it is his responsibility to come to an understanding of how programming languages work, and he has failed to do so. He also uses a wonderful straw man with "you should just use C if PHP handles 5% of its operations the way C does." Just because fopen returns false in C and in PHP doesn't mean PHP is a net loss. Finally, his argument of "the largest and most popular websites in the world, designed and written by the smartest programmers in the world, don't prove anything" is laughable.

Again with the claims that Eevee is a PHP novice. He isn't. He wouldn't have been able to come up with a list of a hundred problems with a language (many of which, like the ternary operator precedence issue, are extremely subtle) if he barely understood how it works. And no, PHP is not a good language simply because it is used by Facebook, Wikipedia, et al. The first iteration of the software for DaVinci surgical robot was written in Matlab. DaVinci became the gold standard in surgical robotics. Does this mean Matlab is the best language for surgical robotics? Absolutely not! Latency is a huge issue in robotics, and Matlab, an interpreted, garbage collected language, had huge issues with latency. Intuitive Surgical struggled with the Matlab software for quite a while before they rewrote most of it in C++. Facebook has already migrated much of its codebase to Hack (which is basically their cleaned up version of PHP) and C++.

Philosophy - PHP was designed to be easy to understand, because at the time the thought of full-featured web applications was silly. An item's source doesn't discredit what it's become. What if someone told you "America was founded to be a colony (and, reading between the lines, not a country); it has not well escaped its roots. This is why I believe nobody should take America seriously as a country." Stupid, right? Good, glad we agree.

Once again, ManiacDan completely misses Eevee's point. PHP was designed to be easy to understand, but it isn't. How can a language in which understanding even the equality operator requires a table of casting precedences be considered "easy to understand"? The issue for PHP isn't that it is used by novices or that it was designed for novices. The problem is that it was designed by novices. Language design is hard. Language design is easy to screw up. The legacy of PHP will remain an immortal reminder of this.

PHP is built to keep chugging along at all costs. MY GOD! HOW LUDICROUS! PHP is a web language with very little ability to recover from a crash the way you would in a desktop environment.

My god. It scares me that a web developer would believe this. WEB DEVELOPMENT IS ABOUT SECURITY. It is much better to have your web app throw an exception, crash, reboot, and serve a 500 message to the user (like a Django or Rails app) than it is to have "it continue chugging along" doing all kinds of undefined things to your server. PHP is a hacker's fantasy land precisely because it continues chugging along.

This is the closest he comes to outright saying "I don't understand it and therefore it's wrong." If you want to understand how weak typing conversions work, you could look in the manual for the chart, or you could read my article on it.

Again, if you have to consult a chart every time you want to use the equality operator, there is something fundamentally wrong with the operator. Remember the handyman with the PHP powerdrill? Well apparently he has to consult an almanac every time he's about to drill a hole. If the moon is waxing, he sets his drill to very-slow-counterclockwise-drywall-electric. If the moon is waning he sticks the drill to his head and puts himself out of his misery.

Server-level configurations are pretty handy and remove a lot of boilerplate, don't you think? Good thing removing boilerplate was one of his biggest criteria back at the beginning.

Server level configurations are useful if they define things like the maximum number of concurrent database connections or header size limits. They aren't useful when they completely mutate the way the language works. When you can't tell what "fopen('http://www.google.com', 'r')" is going to do with out opening up php.ini, .htaccess, and scanning your entire codebase for calls to ini_set, that is a problem. It gets worse when you realize that different libraries are written with different php.ini settings. What do you do when library A cannot run with the php.ini that library B requires? Do you roll your own version of library A? Not a single other language I know has this problem.

C and Python crash fatally, potentially destroying the memory space of other programs. Got it.

Again, ManaicDanhas zero idea what he his talking about. The C application might crash, but assuming that it running on any operating system written after 1995, it will not destroy the memory space of another program. That's exactly what segfault means: the program was prevented from destroying another program's memory space. Again, segfaulting the CGI process and having the server deliver a 500 message to the user is better than chugging along with undefined behavior. As for a Python exception destroying other programs' memory space... Oh I give up.

We're barely halfway through ManiacDan's post and already nearly point he's raised was one of the following:

1. A misunderstanding or intentional misrepresentation of Eevee's criticisms. (A good language should be intuitive easy to understand get's transformed into it's the language's responsiblity to be understood by everyone.)
2. A misunderstanding of standard web development or programming paradigms. (Unhandled exceptions in a web app are bad!)
3. A failure to see the potential for problems in certain PHP features. (The configuration nightmare that is php.ini.)
4. A complete lack of knowledge of how things are done outside the confines of PHP. (The finally statement in Java or Python.)

Is there any point in continuing this exercise? ManiacDan's article is complete bunk. It's not even 1/10th as well researched as Eevee's "fractal" article. PHP sucks. Either deal with it or move to a new language.

about a month ago

Submissions

Calavar hasn't submitted any stories.

Journals

Calavar has no journal entries.

Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>