Статьи

Реальная разница между PHP и Python

Публикуя в полной реализации бесполезности этого, на данный момент на reddit происходит некоторая критика PHP (как обычно): PHP против Python — реальная разница , вызванная этим слегка забавным изображением . В то время как я могу принять пункты — технически это на самом деле намного сложнее обрабатывать ошибки равномерно в PHP и сообщество менее богато программистами, чем Python — соответствующая война пламени с Reddit удается пропустить другую точку, которая легче всего выражается в коде.

Какая самая значительная разница между этими двумя сценариями?

<?php $hits = 0; printf ("Hits: %sn", $hits); $hits++; 

И контроллер web.py (абсолютно не предназначенный для критики — выбрал его, потому что он мне нравится — обсуждение применимо практически ко всему, что не относится к CGI, и, фактически, это на самом деле тоже ничего специфического для Python)…

#!/usr/bin/env python import web urls = ( '/.*', 'counter' ) hits = 0 class counter: def GET(self): global hits print "hits %s" % hits hits += 1 if __name__ == "__main__": web.run(urls, globals())
#!/usr/bin/env python import web urls = ( '/.*', 'counter' ) hits = 0 class counter: def GET(self): global hits print "hits %s" % hits hits += 1 if __name__ == "__main__": web.run(urls, globals()) 

В зависимости от того, как вы развернете последний (т.е. не как CGI), он будет фактически засчитан — т.е. состояние может сохраняться между запросами . Хотя это включает эту функцию, она также является потенциальным источником очень болезненной стрельбы в себя. Когда вы начинаете задаваться вопросом, могут ли слабые ссылки помочь устранить утечки памяти где-то в вашей большой кодовой базе , возникает чувство тяжести. Это карри, возможно, имело приятный вкус, но подождите до утра после… Помните те утечки памяти JScript — вы действительно хотите такую ​​же забавную серверную часть?

«Но да, конечно, сэр. Конечно, ты умнее этого. Нет, один синглтон не может повредить, не так ли? Вы никогда не совершите эту глупую ошибку. Нет никогда. Даже в самые скучные дни »;)

Как это связано с ошибками и этим изображением ? Поскольку PHP «сбрасывается» после каждого запроса (см. Здесь или более подробно здесь ), на самом деле не всегда необходимо явно обрабатывать ошибки — при условии, что в вашем коде нет ничего фундаментально «сломанного», а это какая-то ошибка времени выполнения (например, db вниз), часто достаточно просто игнорировать проблему и ждать, пока система «исправится» — ничто не оставит PHP в состоянии, из которого он не может восстановиться. Это логично, что Дэмиен Кац делает намного лучше в кодах ошибок или исключений? Почему надежное программное обеспечение так сложно? — читать это — читать все это.

В любом случае — снова приносим извинения Python / web.py — просто следуя потоку reddit — в равной степени могли быть Rails, Catalyst или .