Чем плох PHP? Альтернативы?
если это действительно так.Да, это действительно так.
Перестал читать после этой фразы "I loooove Python".
Напрасно. Прочитай целиком, рекомендую.
Еще меня смущает вот что:
- сравнение ведется только с одним языком - Python
- о минусах самого Python ни слова. Уверен, что их тоже можно набрать похожий список.
Думаю объективное сравнение должно охватывать 4-5 языков с их плюсми / минусами.
Эта статья однобока и субъективна.
По описанию автора все выглядит так мрачно, что я даже не понимаю, как на таком ужастном языке можно было написать большую часть веба.так ведь веб-приложения как правило ужасны
Эта статья однобока и субъективна.полностью соответствует вопросу в subj
На Python или чем-то еще можно написать хорошо? Мне кажется ужастность идет от недостатка стандартизации, зоопарка технологий и очень высокого темпа смены последних
Ok, переформулировал тему в более практичный вопрос
полностью соответствует вопросу в subj
относительно простотой поиска квалифицированных разработчиковСерьезно? Мы тут искали пхпшника в команду, у меня впечатление что там страх и погибель.
программиста искать не пробовали ?
Аффтар же по себе оценивает.
программиста искать не пробовали ?Это подъебка на тему "хорошие программисты могут писать НА ЧЕМ УГОДНО"? Скучно отвечать.
Меня интересуют такие вещи, если бы вы выбирали сейчас стек технологий для веб проекта, чтобы вы выбрали?
Если был опыт использования той или иной технологии и вы ушли от нее, интересует почему и чем заменили.
Меня интересуют такие вещи, если бы вы выбирали сейчас стек технологий для веб проекта, чтобы вы выбрали?Если это относительно небольшой (< ~100k loc) CRUD-like проект, то питон (руби, если в результате флуктуации вакуума проще найти людей. Пхп/перл - no no). Если больше/сложнее, то статическая типизация имо начинается окупаться. Java/Scala?
Если нужна производительность и база не является ботлнеком, то go.
Про ноду и зачем она нужна я ничего не знаю.
распространенностью, относительно простотой поиска квалифицированных разработчиковМы уже полгода не можем PHPшника найти (правда ищем не особо активно). Соискателей много, но большинство полный шлак. Много программистов на битриксе.
Привет,А как вообще отвечать на вопрос типа
"Привет! Подбираю, что подвести к розетке(ам), останавился на 3х1,5 мм^2 алюминиевом проводе. Подкупает широкой распространенностью, простотой закупки, и т.д. Поводом написать является распространенное мнение "алюминиевая проводка говно".
Но не может же 80% проводки на территории ex-USSR быть построенной из говна?"
что за проект-то? а то вдруг ты десктоп приложение на нём пишешь.
Если это относительно небольшой (~ < 100k loc) CRUD-like проект ...Вот это лучший ответ а треде!
Невозможно обоснованно рекомендовать что-то для сферического веб-проекта в вакууме.
Какого рода веб-проект у топикстартера?
Заказная разработка для бизнеса - Java однозначно. Какой-нибудь стартап для широкого круга обычных пользователей - скорее python. Домашнюю страничку сделать - на том, что лучше знаешь и на что меньше времени и сил уйдёт.
Поводом написать является распространенное мнение (особенно его часто слышу от разработчиков на Python), что "PHP говно".
Могу рассказать историю из личного опыта. Я участвовал в веб-проекте, его изначально написал хороший программист (сишник) на ПХП. Код был написан просто и прямолинейно, его было легко понять и он работал хорошо. Потом этот программист отошел от программирования, и ему надо было кому-то передать проект. Так вышло, что он нанял питониста. Питонист раскритиковал PHP и убедил переписать все на питон. В результате он развел там нереальный бардак из python-фреймворков и уволилися (уехал за границу).
У меня сложилось впечатление, что многие питонисты, изучив свой питон, думают что приобщились к таинству программирования, и теперь надо только использовать в коде фишки питона (как-нибудь хитро абстрактно классов нанаследовать) и применить побольше питоновских фреймворков.
домашнюю страничку - на smalltalk. Для разнообразия.
На брейнфаке.
А есть готовые фреймворки?
Мне PHP нравится своей широкой распространенностью, относительно простотой поиска квалифицированных разработчиков, наработаными библиотеками, простотой хостинга, в т.ч. Google Cloud и Amazon.Если вкратце, PHP - говно, но если PHP-истов посадить в песочницу, где сильно нагадить они не смогут, то нормуль (см. Facebook). Весь мало-мальски серьезный код при этом пишется на других - более приличных - языках.
Много лет назад взяли в команду одного чела. Он сразу стал убеждать всех, как круто писать на питоне. Настрогал какое-то нереальное кол-во кода, но это был баг на баге и разобраться в этой лапше не было никаких сил. Был уволен. После этого, есть такой момент, я стал предвзято относится и к питону тоже.
Весь мало-мальски серьезный код при этом пишется на других - более приличных - языках.Кстати, каких? Если взять пересечение доступных для AWS Amazon и Google App Engine то получается выбор только из PHP и Python. Если пожертвовать универсальностью, то сюда можно добавить Go, .NET, Node.JS и Java. Есть еще Rubi, но это мне вообще не понятно кто это использует и зачем.
Кстати, каких?Java, C++, ну наверное Go какой-нибудь тоже прокатит.
да, я тоже согласен, что это был лучший ответ. Приложение - обычное CRUD.Изучив этот линк http://www.quora.com/Which-is-better-PHP-or-Python-Why склоняюсь к тому, что мне нужно побороть свое субъективно негативное отношение к Python и проанализировать этот язык на реальных простых примерах, чтобы сделать обосновнанный вывод.
Какого рода веб-проект у топикстартера?
Заказная разработка для бизнеса - Java однозначно. Какой-нибудь стартап для широкого круга обычных пользователей - скорее python. Домашнюю страничку сделать - на том, что лучше знаешь и на что меньше времени и сил уйдёт.
фишки питона (как-нибудь хитро абстрактно классов нанаследовать)Что за бред?
почему rails может убить ruby. На питоне тоже так можно.
А что по-твоему, метаклассы - не фишка питона? А возможность присвоить __class__ свойство? А ещё есть goto, подключаемое декоратором. Если того желать, можно крупно поднасрать. Опять же, см. Опять же, см. почему rails может убить ruby. На питоне тоже так можно.ну если брать язык, где "нельзя никак", то желающие сделать что-то хитрее пишут кодогенератор - проще не становится
у нас уже был предыдущий раунд обсуждений этого топика. Вывод вкратце: кодогенерация доступна везде, но в некоторых языках нужно приложить усилия, а в некоторых можно случайно испортить рабочий код.
Если взять пересечение доступных для AWS Amazon и Google App Engineцукерберг со своей реализацией php смеётся над тобой
А что по-твоему, метаклассы - не фишка питона? А возможность присвоить __class__ свойство? А ещё есть goto, подключаемое декоратором.Не ясно как твои вопросы связаны с моим удивлением по поводу "абстрактно наследовать".
Метаклассы - фишка питона, но сказать что все прям пытаются их применять - это абсурд. 95% про них не слышали, из оставшихся - 99% не применяли в реальной жизни (я в том числе). Есть супер-редкие случаи когда они позволяют сделать удобное апи, и тогда хорошо что они есть.
Про goto вообще смешно, оно имплементится там перетиранием байт-кода и является просто упражнением, ты такое же можешь в джаве сделать, только внешняя тулза будет нужна.
Если того желать, можно крупно поднасрать.Если в команде есть разработчик, желающий такого, то язык - последняя проблема, которая должна беспокоить.
Что за бред?Ну я например открываю flask (считается легковесным фреймворком на питоне) и вижу что там для чтения конфига используется какой-то питоноспецифический мудреж.
И этот "мудреж" используется не для "чтения конфига", а чтобы заалиасить app.debug (и другие подобные параметры) в app.config['debug'].
PHP - нормальный язык, в общем-то, но мне не нравится, что много html-кода генерится непосредственно php-скриптами. Ну то есть люди реально пишут какую-нибудь функцию, которая возвращает строку, содержащую кусок html-кода. PHP MVC фреймфорки как-то не пошли.
ASP.NET ( c# ) - тоже можно сделать много хорошего и быстро, но производительность часто невысокая, и дорого поддерживать такое решение. Код неплохо отделяется от логики.
В последнее время все новые разработки веду на MEAN-стеке. Удобно, что везде используется один язык - JavaScript, нет возни с базой данных, производительность приложения хорошая, но проигрывает затюненному nginx+php-fpm. Код очень удобно структурируется по модулям, к которым несложно написать потом тесты. Много уже готового кода.
Python тоже пробовал, но его синтаксис мне не нравится, а особых преимуществ перед PHP MVC фреймворками я не нашёл.
В последнее время все новые разработки веду на MEAN-стеке. Удобно, что везде используется один язык - JavaScript, нет возни с базой данныхЭто с монгой-то нет возни?
Это с монгой-то нет возни?А какая с ней возня? Вся структура данных объявляется в коде, нужно только не забывать индексы декларировать. Аггрегация данных, конечно, не очень удобно делается, но вполне логично.
Агрегация данных с появлением aggregation framework по-моему стала просто ужасной, до этого она была невыносимой.
О мелочах вроде багов из-за асинхронного сохранения по дефолту в старых инсталяциях и нечитаемого синтаксиса запросов разговаривать даже не хочется. Глобально мне не ясно, зачем из постгреса и монги выбирать монгу.
И этот "мудреж" используется не для "чтения конфига", а чтобы заалиасить app.debug (и другие подобные параметры) в app.config['debug'].Вот я это и имею в виду, вместо того чтобы написать просто и понятно, что-то сидеть и алиасить, переопределяя какие-то магические методы. Если при чтении значения из хэш-таблицы разводят такой бардак, то что будет при решении более сложной задачи, страшно подумать.
Ты прикалываешься что ли? Читай значения из хэш-таблицы, благо flask позволяет, кто не дает-то?
Глобально мне не ясно, зачем из постгреса и монги выбирать монгу.Как раз из-за отсутствия схемы. Для несложных структур данных монго - очень практичный выбор, повышает скорость разработки.
С багами не сталкивался. Синтаксис запросов, к сожалению, действительно оставляет желать лучшего, но, опять же, он сделан таким образом, чтобы вписаться в общую javascript-концепцию.
Глобально мне не ясно, зачем из постгреса и монги выбирать монгу.Хочется же иногда повелосипедить
С багами не сталкивался.Никогда не видел такого, что в хэндлере запроса делается collection.insert({"id": "123"}), отрабатывает успешно, этот айдишник возвращается клиенту. Тот приходит снова, выполняется collection.find({"id": "123"}) - и с некоторой вероятностью ничего блеать не находится?
Это было дефолтным поведением монги даже с одним инстансом (insert возвращал управление до того, как что-то попадало в базу) и, насколько я знаю, до сих пор является дефолтным поведением при наличии репликаций (код может пойти к другой реплике, до которой информация о новой записи не успела дойти).
Но можно настроить и дожидаться появления данных на реплике
Приложение - обычное CRUD.Кто-нибудь обидится, если данные утекут непонятно куда? если нет, то ПХП или питон, если да - Java, Go, Scala...
Да, кстати, Java у Amazon, очевидно есть:
http://aws.amazon.com/java/
Кто-нибудь обидится, если данные утекут непонятно куда? если нет, то ... питон, если да - Java, Go, Scala...WAT?
http://3v4l.org/tT4l8?
<?php
var_dump(md5('240610708') == md5('QNKCDZO'));
var_dump(md5('aabg7XSs') == md5('aabC9RqS'));
var_dump(sha1('aaroZmOk') == sha1('aaK1STfY'));
var_dump(sha1('aaO8zKZF') == sha1('aa3OFF9m'));
var_dump('0010e2' == '1e3');
var_dump('0x1234Ab' == '1193131');
var_dump('0xABCdef' == ' 0xABCdef');
bool(true) bool(true) bool(true) bool(true) bool(true) bool(true) bool(true)
поэтому простого примера с фейлом не привести
но идея проста: java-программы срут исключениями, которые обрабатывают как попало
(то есть если пхп-разработчик путает == и ===, то жава-разработчик в аналогичной ситуации криво обработает исключение)
и вот во время подсчёта хеша от пароля возникнет исключение, в результате обработки хеш станет равным пустой строке или null, то есть совпадёт с правильным хешем "подсчитанным" тем же способом
1) что в твоем сообщении делает питон?
2) основные причины утекания данных неизвестно куда - sqli и xss. Обе причины никак не зависят от языка.
3) если ты используешь для паролей sha*, а не pbkdf2, то Брюс хочет перемолвиться с тобой парой слов
Сейчас редко пишут велосипеды для секьюрити на джава (и использовать её корректно легко)
и вот во время подсчёта хеша от пароля возникнет исключение, в результате обработки хеш станет равным пустой строке или null, то есть совпадёт с правильным хешем "подсчитанным" тем же способомппц. Ты реально писал когда-нибудь на java?
Никогда не видел такого, что в хэндлере запроса делается collection.insert({"id": "123"}), отрабатывает успешно, этот айдишник возвращается клиенту. Тот приходит снова, выполняется collection.find({"id": "123"}) - и с некоторой вероятностью ничего блеать не находится?Я не знаю точно, как работает mongoose, который используется в MEAN-стеке, но когда в нём сохраняешь документ, то в результате получаешь коллбэк с сохраненной версией документа, и эта конструкция работает без багов, даже на моей реплике, поэтому сталкиваться с такой проблемой не приходилось.
Это было дефолтным поведением монги даже с одним инстансом (insert возвращал управление до того, как что-то попадало в базу) и, насколько я знаю, до сих пор является дефолтным поведением при наличии репликаций (код может пойти к другой реплике, до которой информация о новой записи не успела дойти).
зато запускал программы
как правило они срут длинными эксепшнами в stderr или в лог, но продолжают "корректно" работать
Сейчас редко пишут велосипеды для секьюрити на джаваты так говоришь как будто для php нет фреймворков которые умеют проверять пароль
Твоя подъёбка несколько устарела ;-)не сильно устарела, пример 2013 года
http://howtodoinjava.com/2013/07/22/how-to-generate-secure-p...
вылетает исключение - по джавовской традиции срём в лог - результат возвращаем null
Поводом написать является распространенное мнение (особенно его часто слышу от разработчиков на Python), что "PHP говно".Пиши на ПХП.
Буду рад услышать более обоснованные мнения, если это действительно так.
Не слушай шибко умных. ПХП нормально работает и всё с ним отлично.
Могу рассказать историю из личного опыта. Я участвовал в веб-проекте, его изначально написал хороший программист (сишник) на ПХП. Код был написан просто и прямолинейно, его было легко понять и он работал хорошо. Потом этот программист отошел от программирования, и ему надо было кому-то передать проект. Так вышло, что он нанял питониста. Питонист раскритиковал PHP и убедил переписать все на питон. В результате он развел там нереальный бардак из python-фреймворков и уволилися (уехал за границу).Похожая ситуация с Кинопоиском и Яндексом.
Написано всё было хорошо, работало и пользователи были довольны. Пришли пидорасы, выкинули всё и написали на яве. Результат всем известен.
Важно не на чем пишут, а КТО(!) и как.
Много программистов на битриксе.
С ПХП всё плохо. Зачем учить язык, который тебе не помогает писать программы, а вредит? И чтобы весь этот вред победить нужно иметь нехилый опыт в области мазохизма.
Зачем учить язык, который тебе не помогает писать программы, а вредит?так его и не нужно учить
в интернете набираешь "как сделать то-то" и тебе ответ на пхп
а вот чтоб найти пример на джаве выше, мне пришлось постараться
Зачем учить язык, который тебе не помогает писать программы, а вредит?ШТОА?
Если взять пересечение доступных для AWS Amazon и Google App Engine то получается выбор только из PHP и Python.А в google app engine все та же убогая гугловая база данных? Я бы предпочел опердень делать на плохом языке с хорошей БД, чем на хорошем языке с плохой БД.
Тебе никто не запрещает использовать любую БД.
Интересно, здесь из тех, кто наезжает на PHP, есть хоть один человек из компании, где на PHP написано что-то большое и высоконагруженное? Ну скажем в районе 50 тысяч rps? Или все о PHP знают исключительно потому что в свое время персональные странички или инет-магазинчики на них лабали в свободное время?
Вполне язык. LAMP вполне позволяет сделать всё что угодно. Пианист дело говорит - не важно на чём пишут, важно кто пишет.
Да, у пыха есть очень странные особенности - ебаная тонна фунцкций в глобальной области видимости, адовые наименование этих самых функций (никогда невозможно всё запомнить, мануал - твой друг), спецефичный сахар, весьма "своебразная" объектная модель, ориентированность на винду в разработке и многие многие. Отдельной строкой мне понравились трейты — очень клёвая возможность мгновенно замакаронить код. Ну и всякие мелочи, вырастающие из возможности мешать хтмл и код.
А так тот же js серьёзно сложнее в поддержке т.к. наговнокодить на нём даже проще, и ещё и в ногу себе выстрелить задача ну просто тривиальная. Это помимо прототипного ориентирования, которое не понимает 90% js-писателей
ориентированность на винду в разработке
Я вообще согласен с тобой. Две крупные соц.сети написаны на php, одна из них - это фейсбук. Это означает, что недостатки php, связанные с производительностью, кривым наименованием функций и так далее, всё же не перевешивают его достоинств. Часть недостатков можно пофиксить фреймворком, часть - велосипедом типа hhvm, а можно просто забить и докупить серверов, и это будет дешевле, чем писать на го или питоне.
У любого языка есть область применения, и по опыту нашей компании например получается, что постоянно изменяемую бизнес-логику удобнее писать на php, специализированные сервисы для хранения и обработки данных - на C, многопоточные утилиты - на Go.
А то, что программисты на php сплошь тупые, это конечно правда только отчасти. Дело в том, что php - язык с очень низким порогом вхождения, не навязывающий правильных парадигм написания кода, и к тому же популярный. И каждый, кто прочитал "PHP за 24 часа", тут же бежит по собеседованиям.
Но при этом попробуйте устроиться программистом в фейсбук.
Интересно, здесь из тех, кто наезжает на PHP, есть хоть один человек из компании, где на PHP написано что-то большое и высоконагруженное?Ну, я писал большое и высоконагруженное. Так что ответственно заявляю, что PHP - говняшка еще та.
На php писал? И на что в итоге перешли в таком случае?
<?phpА я че-то перестал в какой-то момент понимать, в чем тут проблема.
var_dump(md5('240610708') == md5('QNKCDZO'));
var_dump(md5('aabg7XSs') == md5('aabC9RqS'));
var_dump(sha1('aaroZmOk') == sha1('aaK1STfY'));
var_dump(sha1('aaO8zKZF') == sha1('aa3OFF9m'));
var_dump('0010e2' == '1e3');
var_dump('0x1234Ab' == '1193131');
var_dump('0xABCdef' == ' 0xABCdef');
Ну да, сравнение — это три "равно", а не два. Два "равно" это неведомая ебаная хуйня, не пригодная никогда. Это надо запомнить и использовать.
Трудно запомнить тем, кто видел сишное семейство? Ну ради бога. Кто-то когда-то с
Ну и ч0.
Ну синтаксис в PHP такой. Бывает и круче.
Переходите на Лисп, там сравнение делается одним "равно".
Префиксным, правда.
(Ну или всякими equal?, для педантов.)
Важно не на чем пишут, а КТО(!) и как.Сказал человек не переваривающий джаву и переписывающий libslave на том же языке ещё раз просто потому что оригинал использует буст.
Если по первому пункту есть кого выбирать, то тут нужно смотреть, какие требования у тебя к проекту.
Между скриптовыми языками нет большой разницы, perl/php/python/ruby — все они предназначены для решения одного и того же спектра задач. Более свежий языку лучше предшественника максимум на 5%, и отличия обычно ограничены syntactic sugar (уровня "давайте не будем делать, как $name/@name/%name в перле"). Но во всем остальном полностью стремятся друг к другу: по фичам языка, по встроенной библиотеке, по скорости выполнения. Для опытных прогеров 5% особой роли не играют: нет смысла переучиваться на новый язык из-за жалких 5%. А вот свежеиспеченный выпускник всегда предпочтет выучить самый современный языку. Это, в конечном счете, и обеспечивает преемственность языков. Поэтому если нужна долгосрочная поддержка (10+ лет), то лучше все таки питон — он умрет позже php.
Плюс питон выбивается из оставшихся языков тем, что он изначально хорошо спроектирован (в отличие от php, который обрастал фичами со временем) и поэтому используется в том числе за пределами веба, например в науке. Как следстве, матожидание от скиллов случайно выбранного прогера выше.
Если же долгосрочной поддержки не требуется, но есть проблема с наймом людей, то можно, наоборот, смотреть эзотерические варианты вплоть до хаскеля: что может быть лучше, чем самомотивированный упоротый прогер? Такой будет и по ночам, и по выходным хреначить чисто за интерес.
изотерические варианты вплоть до хаскеляВ этом "словосочетании" все
На php писал? И на что в итоге перешли в таком случае?PHP так и остался. Backend переехал на java + python.
В первую очередь я бы присмотрелся к рынку труда в том месте, где ты собираешься делать проект.А собственно что мешает работать с удалёнными разработчиками?
Выше затраты на управление разработчиками, выше требования к проджект-менеджеру.
Это понятно, но в условиях дефицита кадров это всё равно может оказаться выгоднее.
Это понятно, но в условиях дефицита кадров это всё равно может оказаться выгоднее.Да, может. Если в наличии есть менеджер с таким уровнем навыка )
а почему, например, Haskell не хотите?
отличия обычно ограничены syntactic sugarстрогая/нестрогая типизация - это серьёзное отличие, а не syntatic sugar.
баду на пыхе+мускуль крутится. Чуваки на хабре частенько пишут.
весьма "своебразная" объектная модель, ориентированность на винду в разработке и многие многие. Отдельной строкой мне понравились трейты — очень клёвая возможность мгновенно замакаронить кодРаньше, при всей дерьмовости ПХП, это был минималистичный язык, в этом была его сила. Потом туда приделали классов, трейтов и прочего бесполезного УГ. Концептуально язык превратился в плохую java. Сейчас джаваскрипт так же "улучшают".
...
А так тот же js серьёзно сложнее в поддержке т.к. наговнокодить на нём даже проще, и ещё и в ногу себе выстрелить задача ну просто тривиальная. Это помимо прототипного ориентирования, которое не понимает 90% js-писателей
Потом туда приделали классов, трейтов и прочего бесполезного УГ.Я юзаю пхп во всех web-проектах и до сих пор не знаю, что это такое
то желающие сделать что-то хитрее пишут кодогенератор - проще не становитсяА что думаешь по поводу babel?
Глобально мне не ясно, зачем из постгреса и монги выбирать монгу.надо выбирать ElasticSearch!
ну если брать язык, где "нельзя никак", то желающие сделать что-то хитрее пишут кодогенератор - проще не становитсяПриведи пример задачи, когда для динамического языка нужен кодогенератор
Приведи пример задачи, когда для динамического языка нужен кодогенераторjs за динамический язык считается?
js за динамический язык считается?Конечно.
http://gist.github.com/imsky/8741402 . Даже если 95% перечисленного - треш, для остальной кодогенерации нашлось применение.
кофескрипт, тайпскрипт, джак и так далее. Смотри полный список:
Имхо это не та кодогенерация, которая имелась в виду. Gadfather утверждает, что в "бедном" языке потребуется кодогенерировать, чтобы решить какую-то задачу. Я себе представить не могу зачем это надо в динамическом языке.
да вот легко. Динамическия язык не поддерживает статической типизации, а хочется. Вот и рождается тайпскрипт. Потому что статическая типизация - это нулевой этап тестирования, где определения тестов размазаны незаметно по всему коду
плохой список. jxt и harmony нет.
Динамическия язык не поддерживает статической типизации, а хочется. Вот и рождается тайпскрипт.Это не кодогенерация в рамках существующего языка, а создание отдельного языка
А какая ещё бывает кодогенерация? Всегда нужен какой-то отдельный язык для конфигурации кодогенератора.
Я юзаю пхп во всех web-проектах и до сих пор не знаю, что это такоеЕщё ты не знаешь что такое сидеть дружным амбициозным коллективом из 20 целеустремлённых профессионалов своего дела и рисовать схему классов динамично развивающегося стартапа.
Ты ж просто какой-то мутный хуй с горы, который даже не понимает, что функция strlen плохая, так как она не вызывается как метод классика. В Итоге твой код — ужасная, нечитаемая хрень, от которой одно расстройство.
То ли дело Ява! Ты точно знаешь, что классик
Text::Utilities::Generic::Common::LengthDetector— то что тебе нужно! Ты подключаешь библиотеку, наследуешь свой класс от интерфейса, и у тебя появляется понятный функционал!
А если ты написал $len = strlen($s) — ты мудак и пишешь вермишель, которая не понятна другим разработчкиам. И тебе не место в коллективе целеустремлённых, нацеленных на профессиональный рост!
Я знаю, что баду на этом крутится, я уже почти три года как в баду работаю =) Собственно я потому и спрашиваю, чем PHP не устраивает, может просто кто-то не умеет с ним правильно работать, используя там, где его преимущества перевешивают недостатки?
Имхо это не та кодогенерация, которая имелась в виду. Gadfather утверждает, что в "бедном" языке потребуется кодогенерировать, чтобы решить какую-то задачу. Я себе представить не могу зачем это надо в динамическом языке.сдаётся мне ты чего-то не догоняешь
в динамическом языке как раз много чего можно
например eval хотя бы
Можешь привести полезный реалистичный пример использования eval (или любой другой кодогенерации) в динамическом языке?
хотя я пытался использовать eval - идея была такая чтоб превратить дерево данных в дерево кода в динамике, то есть сделать как бы компилятор, но это не помогло, оставил в итоге интерпретатор, то есть обычный спуск по дереву
а вот когда я писал на java - это было давно, версия кажется 1.2 - там было ничего нельзя
в нашей команде чел генерировал java-код на GNU Prolog
ну там не было даже дженериков
Можешь привести полезный реалистичный пример использования eval (или любой другой кодогенерации) в динамическом языке?Пример специфический, но вполне себе: ввод пользовательской функции (например для вывода графика, но не существенно).
В том числе при обучении программированию на языках без eval, примеры, требующие пользовательскую функцию, требуют достаточно много костылей/условностей, что ухудшает лёгкость восприятия материала.
Когда я впервые увидел, как легко подобное делается на Haskell-е - был практически культурный шок
pip install и другие такие новомодные штуки - eval в чистом виде
ну если на то пошло: генерация javascript на сервере, чтоб клиент исполнил - вроде нередко делаютПоясни пожалуйста, а что ты имеешь в виду.
Ибо и javascript - текстовый файл, который запросто может отдаваться на клиент с сервера после генерации на сервере.
Так же как и любой html/asp/php/etc-файл.
Или ты как раз это и имеешь в виду?
Ну тогда это как бы не свойство языка.
Ибо и javascript - текстовый файл, который запросто может отдаваться на клиент с сервера после генерации на сервере.php типичный клиент не станет исполнять
Так же как и любой html/asp/php/etc-файл.
а javascript - станет
это использование кодогенерации на динамическом языке на практике
Кстати, в той реализация goto-декоратора, которая гуляет по сети, баг на баге сидит. Сырое говно. Ненавижу когда на неё ссылаются. А идея хорошая.
ну если на то пошло: генерация javascript на сервере, чтоб клиент исполнил - вроде нередко делаютПочему не написать руками js-код, который будет обрабатывать какие-то данные пришедшие с сервера? Почему надо генерировать код?
откуда я знаю? но так вроде делают
я не делал
у тебя какая-то идея-фикс
тебя покусал eval в детстве?
но могу придумать пример, если настаиваешь: по каждому товару генерируется кнопочка "Заказать!", а у ней onclick - даже если это просто вызов одной функции с параметром - номером товара, то это всё равно кодогенерация
а у ней onclick - даже если это просто вызов одной функции с параметром - номером товараа разве нельзя без номера товара сделать, без параметра? какая кнопка кликнута — определять уже внутри обработчика
зачем вы меня хотите заставить придумать необходимость кодогенерации на js?
давайте лучше теперь вы придумайте, а я буду критиковать
Почему не написать руками js-код, который будет обрабатывать какие-то данные пришедшие с сервера? Почему надо генерировать код?Потому что схема данных может меняться. И было бы хорошо, чтобы под эту схему автоматически генерировался код клиента и сервера.
Знаю php-стов, которые хорошо справляются с поставленными задачами.
Знаю питонистов, которые хорошо справляются с поставленными задачами.
Знаю рубистов, которые хорошо справляются с поставленными задачами.
Однако, интересные факты.
мои знакомые php-сты не рады языку, однако это хороший инструмент в их случае ( большой опыт / много готовых проектов ) и вполне подходит для решения задач. Тем более, что один из php-стов сейчас хочет внедрять машинное обучение/data mining в своей конторе.
мои знакомые питонисты ( в количестве одна штука ) так рады своему питону, что не могут не впихнуть его куда попало.
К примеру, стояла простая задача взаимодействия из скриптов с проектом Xcode ( Эппловские файлы проектов )
Так вот, было две возможности:
1) выбрать питон с использованием либы в 1к строк, которая, "по словам питониста", божила просто и все умела, зачем использовать что-то еще.
2) выбрать руби с использованием функциональной части cocoapods ( сторонний менеджер пакетов библиотек для маков, достаточно популярный на тот момент ).
Выбор стоял между "какой-то" божественной библиотекой ( там был один файлик ) и уже функциональной на то время частью cocoapods.
Очевидно, что питон лизнул питон.
мои знакомые рубисты тоже не рады своему языку - слишком много читов можно использовать, всякие monkey patching и подобное. Некоторые из них свалили в Scala. Со слов: "тот же руби, но ты хотя бы понимаешь, почему у тебя все сломается на этапе компиляции"
Такие дела, а тот же php - смотря что у тебя за проект по нагрузкам/сложности и сколько времени у тебя есть на раздумья. Тот же хостинг предоставляет Heroku на амазоне, достаточно удобно интегрировать проекты и на php, и на python/ruby.
Почему не написать руками js-код, который будет обрабатывать какие-то данные пришедшие с сервера? Почему надо генерировать код?
JSONP например
А питонист вообще знал руби? Если нет, то я не удивлюсь, почему он не стал писать на нём. Учить язык ради одной скриптовой задачи - это слишком.
зачем учить язык ради одного скрипта, если можно написать этот скрипт забив в гугл пару запросов о синтаксисе
А по-моему смешнее что упоротыш строит статистику про питонистов, а к концу поста выясняется что знает он только одного.
Копировать код, не зная, что он делает - верх безответственности.
ну если на то пошло: генерация javascript на сервере, чтоб клиент исполнил - вроде нередко делаютТы всё правильно пишешь - и это и есть суть клиент-серверного программирования (когда ты на сервере можешь сгенерить себе именно такой клиент, какой тебе нужен именно сейчас) - кроме одной вещи - это всё не имеет никакого отношения к eval-у и динамическому программированию.
php типичный клиент не станет исполнять
а javascript - станет
это использование кодогенерации на динамическом языке на практике
Ибо из того, что у тебя на сервере C-шный CGI-клиент клепает тот же javascript для клиента отнюдь не следует, что в C есть eval и он является динамическим языком
Ибо из того, что у тебя на сервере C-шный CGI-клиент клепает тот же javascript для клиента отнюдь не следует, что в C есть eval и он является динамическим языкомне тупи
в этом случае на С написан кодогенератор
а кто является динамическим языком - в этой задаче не имеет никакого значения
глянул как оформляются методы, классы, циклы, стандартные/нестандартные либы необходимые для задачи и вперед кодить.
зачем учить язык ради одного скрипта, если можно написать этот скрипт забив в гугл пару запросов о синтаксисеВот-вот, сейчас окружение зачастую значит больше, чем сам язык.
И заботать по быстрому новый язык (чтобы вызвать нужные методы из либы) может быть проще, чем изобретать велосипед на любимом языке.
Имхо вообще неправильно ограничивать себя единственным языком - правильнее выбирать язык под задачу.
не тупиНу так помоги мне - объясни, чем по-твоему отличается
в этом случае на С написан кодогенератор
а кто является динамическим языком - в этой задаче не имеет никакого значения
от
генерация javascript на сервере, чтоб клиент исполнил
на сервере C-шный CGI-клиент клепает тот же javascript для клиента
а что тебе мешало сравнить самому?
не тупиЯ тебе больше скажу - вообще не важно есть тут динамический язык или нет.
в этом случае на С написан кодогенератор
а кто является динамическим языком - в этой задаче не имеет никакого значения
объясняй это форесту и ддд2
вы сговорились что ли? что вы ко мне пристали с динамичностью?Ну ты же сам это написал про это как про
использование кодогенерации на динамическом языке на практике
Вот я и пытаюсь понять, а что конкретно ты этим хотел сказать.
а что конкретно ты этим хотел сказать.пришёл ддд2 и говорит: генерировать код на динамическом языке не нужно
ну ок, во-первых причём здесь я? зачем вы на меня насели с этим?
но раз уж зашёл разговор, то вот вам пример, когда генерируют код на javascript
А, а второе смешное: что питонист сует свой питон туда куда не нужно это не ок, а пхпшник собирается машинное обучение внедрять на пхп это ок.
А какие языки сейчас считаются достойными машинного обучения?
2) Я уже 15 лет пишу на PHP
3) Потому что Си я не знал никогда в жизни, а PHP3 (тогда еще) мне понравился своей простотой
4) Регэкспы я учил на перле, а уже потом применял их в PHP по PCRE-стандарту
5) В школе и в универе учили максимум нахождению максимума в массиве и методу Рунге - Кутты с использованием паскаля..
Еще вопросы?
А какие языки сейчас считаются достойными машинного обучения?Такие где уже все машинное обучение доступно в виде хорошо протестированной библиотеки (нативно или через байндинги)?
1) А как вы заебалиУ меня есть - зачем ты все это написал?
2) Я уже 15 лет пишу на PHP
3) Потому что Си я не знал никогда в жизни, а PHP3 (тогда еще) мне понравился своей простотой
4) Регэкспы я учил на перле, а уже потом применял их в PHP по PCRE-стандарту
5) В школе и в универе учили максимум нахождению максимума в массиве и методу Рунге - Кутты с использованием паскаля..
Еще вопросы?
Или это к тому, что на php в основном пишут немотивированные грамотеи-недоучки, который не в состоянии даже Кернигана-Ритчи прочитать,
и поэтому поиcк квалифицированных программистов затруднен?
и поэтому поиcк квалифицированных программистов затруднен?Ты риальне хочешь получить человека на уровне Ритчи сейчас за стотыщрублей?
одна скриптовая задача не требует изучения языка, если знаешь алгоритмы решения.А побочные эффекты? Мало ли что код выглядит знакомо, важно какие вещи происходят за сценой. Порядок инициализации, например.
глянул как оформляются методы, классы, циклы, стандартные/нестандартные либы необходимые для задачи и вперед кодить.
Похожие темы:
Оставить комментарий
vijrel7878
Привет,Для нового проекта стоит задача выбора основного языка разработки. В числе параметров в том числе есть стоимость разработки/поддержки.
Мне PHP нравится своей широкой распространенностью, относительно простотой поиска квалифицированных разработчиков, наработаными библиотеками, простотой хостинга, в т.ч. Google Cloud и Amazon.
Также я думаю, что успех проекта слабое связан с языком, только если язык не накладывает каких-то принципиальных ограничений. Таковых в PHP я не вижу.
Поводом написать является распространенное мнение (особенно его часто слышу от разработчиков на Python), что "PHP говно".
Буду рад услышать более обоснованные мнения, если это действительно так.