5 ms·
Let's talk about the conclusions that are drawn in this article. I'll try to challenge them one-by-one. > PHP is a great language to start programming! No. PH
by 10098 14y ago
Let's talk about the conclusions that are drawn in this article. I'll try to challenge them one-by-one.
> PHP is a great language to start programming!
No. PHP is not a good language to start programming. And I mean programming in a broad sense, not slapping together websites (which is not really programming, let's be honest). Let's look at people who know how to program, you know, the guys who participate and win awards at ACM ICPC and TopCoder. There are several such people among my friends. Exactly zero of them have started with PHP. Some have started with Pascal, some with Java, some with C++. None with PHP, even though it was available and widely used when they started. I wonder why.
> Once you started, PHP is also good for “real” programming (you know, object orientation and stuff).
First of all, "object-orientation and stuff" is not a measure of how good a programming language is. So you'll have to bring a better argument to explain why PHP is good for "real" programming (whatever that term means). Saying "but Facebook and Wikipedia use PHP!" doesn't count :-)
> PHP is not as bad as they say. There are issues, like with every language, but they rarely cause problems in practice.
Actually, it is. It has some deeper issues that lack of consistency in function arguments. Some of them really do cause problems in practice, like its retarded type system and lack of sane support for multithreading. But I'm not going to name them here because there are tons of articles on the internet explaining those issues. You have probably read some of them. If they did not change your opinion about the language, then I surely won't be able to do it.
- fragsworth 14y ago> No. PHP is not a good language to start programming. Any language is a good language to start programming. Explain how learning PHP first somehow cripples your advancement as an engineer. You can't just say "my friends didn't do it". Otherwise you're really just being elitist.
- 10098 14y agoBecause when you're learning php first, usually you are not learning how to solve problems in an algorithmic way; you're learning how to set up apache or upload a file to the server, or scrape an html page for weather forecast, and other stuff like this. I'm not saying those are useless skills, but it defeats the purpose of "learning to program".
- dr42 14y agoHaha, this is so not true! Using php has nothing to do with setting up apache. You're mistakenly associating solutions with the language. It's like saying you can only write enterprise apps in java, or only write machine learning apps in python. PHP has all the usual programming constructs and is easy enough to get into that I think it's a great language to start out in. And discounting web apps as not real programming is just wrong. Some of the most challenging programming problems today are in the web field. Some people write low level software algorithms, and some write higher level ones that scale to billions of people using them concurrently. They are all 'real programming'. Not all web programming is request.getParameter("foo") and form processing.
- 10098 14y ago> PHP has all the usual programming constructs and is easy enough to get into that I think it's a great language to start out in. Yes it does, so what? Programming is not just fors and ifs and classes you know. There is more to it. You won't learn it if you limit yourself to the PHP cage forever. > And discounting web apps as not real programming is just wrong Did I say anywhere that web applications are not "real programs"?
- Chlorus 14y agoHuh? "You won't learn it if you limit yourself to the PHP cage forever" That's true of ANY language; you seem to think that just because someone starts out with PHP they're permanently crippled and unable to grasp higher programming concepts. Hell, I'd rather someone start out with PHP than, say, Pascal.
- 10098 14y agoNo. In fact, as I already mentioned, I started in PHP myself. The thing that annoys me is that "Meh, PHP is good enough" attitude, which a lot of people seem to share. With that kind of thinking, your progress will be seriously hindered. On a side note, why the hate on Pascal? It's a lot better than PHP as a starter language, it teaches structured programming from the ground up.
- llimllib 14y agoI hate PHP too, but this: > Let's look at people who know how to program, you know, the guys who participate and win awards at ACM ICPC and TopCoder. Is goalpost moving. He's not suggesting that PHP is a great language to start with if you aim to become a great algorithmic programmer, rather that it's a great language to start with if you aim to become a competent web developer. > Saying "but Facebook and Wikipedia use PHP!" doesn't count :-) But why not? Surely "X and Y outrageously successful projects use Z" is a valid argument for Z's power as a programming language?
- lusr 14y agoIt's an invalid argument because not all projects are alike. Facebook and Wikipedia are indeed very successful projects but they have a massive advantage over the types of projects I deal with in enterprise environments. For instance: - technical environment: the Facebook/Wikipedia/generally-any-web-startup architects get to choose their technical environment 100%; in most corporates you need to integrate with legacy applications and databases in a specific environment, often enforced by IT policy, and this imposes significant constraints on which languages will be feasible options - interoperability: for large, modular systems developed by disparate teams over decades with little or no standards or co-ordination, a statically typed language can be absolutely invaluable for ensuring interoperability and discovering usage (documentation is typically non-existent in these environments, as are tests, and the latter is seldom - often impossible - to retrofit); even for new systems, static typing can save a lot of time when developing and integrating new work across large teams, in my opinion - resistance: business and technical knowledge lives in developers who are part of an ancient stack, e.g. Microsoft or Oracle or Borland; switching to PHP or Python or Ruby etc. means convincing these people to learn very different new technologies (good luck - won't happen), figuring out how to interface with legacy stuff using a language outside of the stack, introducing new tool chains, etc.j - time & budget: even if the existing developers are keen to learn, it's tough convincing the project manager you need an extra month to go through the upskilling process and that you need to spend time researching interoperability options, and that inevitably you will run into future issues, etc.; the problem is most projects are run and budgeted for on a local cost benefit analysis and very rarely would the benefit of switching languages for one project be worth it (even though, in the big picture across multiple projects, it may very well be) An observation: whenever this debate comes up on the HN, the proponents of modern, dynamic languages are invariably people working in closed environments where they have the freedom to set standards, do things right from the beginning (coding standards & reviews, tests, documentation) and the ability to make technology selections across the board. Often this freedom is not a characteristic of other environments, and consequently the language used in a one environment may be unsuitable in another.
- blindhippo 14y ago1) why is PHP's type system "retarded"? 2) why does PHP need multithreading? Serious questions. I've been using PHP professionally for 5 years now, haven't once needed either of these "deeper issues" to be solved, so I'd appreciate it if people would stop bitching about the language and actually explain why PHP is bad (with examples).
- 10098 14y ago1) 0 == "" && 0 == "0", but "0" != "" Does that convince you? 2) because processing some HTTP requests can be a tad bit more complicated than "do a select from a database and substitute the values into a template"
- dr42 14y agoThis may appear 'retarded' until you understand how type conversion works. Then those examples are perfectly logical and expected. PHP has === if you want to disable the type conversion in the conditional operator.
- 10098 14y agoI know about ===. I do understand how type conversion works. I just don't think that it works "correctly". Converting "0" to 0 implicitly seems completely illogical to me. A string is not a number.
- dr42 14y ago"a string is not a number" Well then use ===, but when a string contains numbers then php will do the type conversion for you. It's a convenience. It may not work correctly by your definition but it's pretty intuitive and useful the way it is.
- jules 14y agoKnowing how something works does not make it a good idea. I see this attitude a lot: if you've mastered something complicated, it seems so logical and inevitable. I had this attitude myself once when I only knew PHP. But then you discover that PHP is not god given or a natural phenomenon. A human put each and every behavior in a programming language. Some choices are better than others. Significantly worse choices were made in PHP than in e.g. Python. Therefore new programmers should learn a language like Python, not PHP. It's a waste of time to learn the intricacies of things that ended up that way due to a bad decision or even by accident. Note that Python is far from perfect too, but it's one of the least bad to start with.
- xd 14y agoIm sorry, but what do you mean by "sane support for multithreading"? You are aware that PHP has no threading support, right? I mean you seem pretty damn confident in your opinion of PHP for someone obviously lacking in any real world experience with it.
- kemayo 14y agoAvoiding taking a position on the core issue... "but Facebook and Wikipedia use PHP!" is the same argument as "the guys who participate and win awards at ACM ICPC and TopCoder", no? If you want to object to the former, don't then use the latter. :P
- 10098 14y agoThat's a correct remark. I detailed about why I think php is a bad language to start in one of the comments below :) Basically, the "facebook argument" is widely used to prove that php is good for solving real-world problems, but the truth is, facebook is a complex system and it is not written entirely in php, like some people seem to think.
- rythie 14y agoWhy would you want multithreading in PHP? If you require multiple remote I/O there is Curl. If you require more than one CPU per web request you most likely doing something wrong. Multithreaded code is hard to get write, hard to code and hard to debug and not suitable for generating webpages. In case you haven't guessed I think it's actually a benefit it doesn't have that feature, it stops people doing something silly that PHP is not designed for.
- 10098 14y ago> Why would you want multithreading in PHP? To not write cron jobs that get triggered every n minutes to do some potentially time-consuming tasks, for example.
- rythie 14y agoA threading system doesn't help you with that, the web request will have died by then. Use a queuing system if you want to do that, just as you should do in other languages.
- 1SaltwaterC 14y agoI wish one day people would stop using mod_php5 and start using PHP-FPM. That way we might get proper documentation and support. fastcgi_finish_request() does the neat thing of finishing the request in the user side, but continuing to do the work in the server side: http://php.net/manual/en/install.fpm.php http://php.net/manual/en/install.fpm.php Must be used with care in an environment that uses a fixed number of processes per pool since it may be DoS'ed.