|
0 / 1 / 0
Регистрация: 24.06.2019
Сообщений: 23
|
|
PHP vs Python для WEB05.08.2019, 17:56. Показов 11231. Ответов 90
Метки нет (Все метки)
Здравствуйте.
В последнее время наиболее популярным становится дискуссия: PHP vs Python для WEB Python прост, удобен. При этом позволяет разработку приложений других направлений. Но и PHP не сдаёт позиции. По производительности PHP 7.3 опережает Django! Хочу спросить ваше мнение. Что на сегодняшний день перспективно изучать для WEB Backend? Какие преимущества и недостатки PHP и Python по вашему мнению? Если говорить обо мне, то мне ближе C-подобный синтаксис. Python прост на столько, что бывает сложным. Однако в Python привлекает возможность написания приложений с не объемным кодом. Естественно, как вы понимаете, желательны ответы от имеющих опыт и в PHP и в Python. Благодарю! P.S. В качестве фильтра-отсеивателя джунов, прошу кратко рассказать в ответе кто вы, чем занимаетесь в IT.
0
|
|
| 05.08.2019, 17:56 | |
|
Ответы с готовыми решениями:
90
PHP vs Python для карьеры PHP vs Python для работы PHP vs Python для Backend в 2019 |
|
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
||||||
| 05.09.2019, 14:28 | ||||||
|
Usaga, и у Вас и у меня в примере данные о структуре typedef и функции работы с ней находятся в одном файле, точно также как и у Вас описание свойств и методов якобы объекта находится вместе.
Вы - не правы в этом моменте. Пользователю придется в обоих случаях ИСКАТЬ описание: или в классе или в файле. Прямой (по имени массива и номеру) доступ к моим "объектам" точно также "закрыт" квалификатором static. Можно и условный "конструктор" закрыть им же, оставив доступной только create...() Это точно ваш телефон МТС, мне просто было лениво выписывать поиск подстроки в функции, там жеж коммент "точно также ..". Вы опять невнимательны. ![]() Идея номера МТС размазана по коду .. ровно настолько же как и в Вашем примере - контроль внутри функции, сравнение с подстрокой. ![]() В итого, имеем только отсутствие контроля компилятором квалификатора private и только. Но! Это как раз и есть квалификация погромиста! Или ты - квалифицированный программист и ЗНАЕШЬ сам "что можно и что нельзя" или тебе "нужен помощник" в виде компилятора. Не? ![]() P.S. Только ООП нет ни в этом ни в вашем примере. Это "чистый Си с классами". А вот когда Вы добавите в свой пример наследование и виртуализацию .. мне придется руками заводить в структуре указатель на таблицу методов, создавать её статически для каждого класса и следить за тем что используется, где и как. Вот это уже ООП, даже если на "чистом Си". Добавлено через 3 минуты P.P.S. Больше того! Наши примеры после компиляции (подретушировать только) будут выглядет в коде практически ОДИНАКОВО! Какие уж там "объекты" .. Добавлено через 6 минут Да, и ползателю можно предоставить только то, что ему требуется в виде хидера:
![]() Добавлено через 10 минут Пардон, в 8-й строке вынес лишнее.. ![]() typedef struct _phone_string_ PhoneString; Добавлено через 26 минут Ну вот ещё, наверное для понимания того, что инкапсуляция не есть значимая часть парадигмы ООП: https://habr.com/ru/post/444602/
0
|
||||||
|
Модератор
|
|||
| 05.09.2019, 14:32 | |||
|
И запись obj.method1(28) ни чем не лучше method1(obj,28) если компилятор позволяет.
0
|
|||
|
14349 / 9444 / 1359
Регистрация: 21.01.2016
Сообщений: 35,594
|
||||||||||||
| 05.09.2019, 14:40 | ||||||||||||
|
В вашем же случае функции находятся в одном файле просто потому, что вы так сделали. Никто и ничто вам не помешает разместить их где угодно. В том числе и в десятках разных файлов. В моём примере, входные данные проверяются на корректность (и, может быть, приводятся к нужному виду) и далее извне это уже не изменить минуя бизнес-правила (в данном случае вообще не изменить - объект просто иммутабелен). Ещё, вы не забывайте, что не все проекты настолько крохотны, что в них один единственный разработчик задействован. Простой пример: получит на руки другой программист вашу структуру PhoneString. Как он узнает, что в ней должен быть только номер МТС и изменять его нельзя? Никак. Только по комментариям и документации. А что он узнает, если получит объект, что я показал? Да всё: по каким правилам он формируется, и что с ним можно, а что нельзя сделать. Потому, что объект в себе всё это несёт. В одном месте. Тоже самое верно и в обратном направлении: передавая ссылку на такой объект в метод стороннего разработчика вы точно знаете, что этот объект не даст себя в обиду и ничего с ним противозаконного не смогут сделать. Разве это не очевидно? Добавлено через 4 минуты
0
|
||||||||||||
|
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
||
| 05.09.2019, 14:50 | ||
![]() Ссылку про инкапсуляцию в Си - прочли? Там - все разжевано. Ничего Вы не сможете добавить к инкапсулированным данным (объектам) в Си, особенно в случае, когда у Вас *.с файл прекомпилирован и Вы его видите исключительно в качестве библиотеки. Вы даже структуру своего телефона МТС подсмотреть не в состоянии, в отличии от чтения ВСЕГО вашего класса. Инкапсуляция есть в НЕ ООП языках и была "всю жизнь" (разделение на файлы, хидеры и квалификатор static - Вам в помощь). Добавлено через 4 минуты Только, как ни странно, но Вы "зацепились" изначально за то, что ООП втрое медленней ..
0
|
||
|
Модератор
|
||||||||||
| 05.09.2019, 15:39 | ||||||||||
![]() В некоторых, вполне ООП языках, методы отдельно от данных.
1
|
||||||||||
|
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
|
| 05.09.2019, 16:27 | |
|
Curry, думаю для ТС-а, можно сделать заключение следующего плана:
На сегодняшний день был есть и остается преспективным для изучения старый, добрый Си. Кто знает Си - тот знает всё.
0
|
|
| 05.09.2019, 16:59 | ||
|
Будет знать всё, но ничего нормального написать для Web(а) не сможет, так как придётся изучить ещё вагон новых технологий.
0
|
||
|
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
|
||
| 05.09.2019, 17:19 | ||
|
0
|
||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
|
||||
| 05.09.2019, 21:47 | ||||
|
Забавно, что пример эмуляции на Java там мало того, что заставляет руками классы прописывать в интерфейсе, так ещё и приводит к переполнению стека.
0
|
||||
|
14349 / 9444 / 1359
Регистрация: 21.01.2016
Сообщений: 35,594
|
|||||||||||
| 06.09.2019, 06:27 | |||||||||||
|
Добавлено через 19 минут albest, вообще, возьмите или C# или Java. Строгая типизация, JIT, языки общего назначения (знания можно будет переиспользовать). Нафига вам эти транслируемые языки с динамической типизацией? Кажутся проще для освоения?
0
|
|||||||||||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
|
|||
| 06.09.2019, 07:22 | |||
|
0
|
|||
|
14349 / 9444 / 1359
Регистрация: 21.01.2016
Сообщений: 35,594
|
|||
| 06.09.2019, 07:26 | |||
|
0
|
|||
|
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
||
| 06.09.2019, 07:35 | ||
|
За что Вы в таком случае "зацепились" .. внезапно оказалось что "возможен ООП без виртуальных функций" - это ваша позиция, верно её понял? Если да, то Вам и было отвечено что ваш "ООП без виртуализации" (наследования) - это "Си с классами", с чем Вы никак не можете согласиться. Да, мой пример не имеет "классов", потому что их НЕТ в Си. Банально, правда? Но! Так Вам и указано "Си с КЛАССАМИ" .. это и есть Ваш пример. Они отличаются? Не более чем в терминологии, потому что далеко не всё что кем-то в каком-то языке обозвано "классом", является таковым на самом деле согласно парадигме ООП. ООП без наследования и виртуализации - не бывает. А то что "бывает" (наследование НЕ используется), то и есть "Си с классами". Собственно, Вам это тут уже несколько человек пытаются разъяснить: не все то золото, что блестит. P.S. Остальное - без комментария, ибо флейм, мало относящийся к вопросу.
0
|
||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
|
||||||
| 06.09.2019, 07:35 | ||||||
|
0
|
||||||
|
14349 / 9444 / 1359
Регистрация: 21.01.2016
Сообщений: 35,594
|
||||||
| 06.09.2019, 07:44 | ||||||
![]()
0
|
||||||
|
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
||
| 06.09.2019, 07:44 | ||
![]() В показанной Вам иллюстрации, во-первых Си, а не "плюсы", во-вторых, точно такой же самостоятельный код и объект-значение, и ничего никаким поиском искать не требуется. А вот, как только Вы к своему телефону добавите "дружественный класс" скажем ТелефонТЕЛЕ2, то вот тут-то как раз и приходится шариться поиском по всему проекту.. Вам, в качестве примера уже предлагась структура "Файл" из стандартной билиотеки Си. Есть хотя бы один программист Си, который бы искал или был бы способен ковыряться во внутренней структуре файлового заголовка, без исходников этой билиотеки? Много из них "ищут методы работы с файлом" полнотекстовым поиском? Вот зачем гнать откровенную пургу? Ну нее знаете Вы Си, не понимаете парадигму ООП, ну бывает. Её вообще мало кто понимает правильно.
0
|
||
|
14349 / 9444 / 1359
Регистрация: 21.01.2016
Сообщений: 35,594
|
||||||
| 06.09.2019, 07:50 | ||||||
|
0
|
||||||
|
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
|
| 06.09.2019, 07:51 | |
|
korvin_, простое наследование на Си решается и делается "на раз". Сложнее с виртуальным. Тут рекомендую смотреть на реализации первых компиляторов с С++. Они как раз силами препроцессора "переводили" код на С и потом он нормально компилировался обычным С-компилятором.
Писать на С как на С++ вполне можно. Гемморно - другой вопрос. Тут вопрос похоже чисто терминологический, "товарищ не понисмает", что ООП включает в себя наследование как НЕОБХОДИМОЕ условие, а вовсе не как "необязательное".
0
|
|
|
14349 / 9444 / 1359
Регистрация: 21.01.2016
Сообщений: 35,594
|
||||
| 06.09.2019, 07:55 | ||||
|
Добавлено через 1 минуту
0
|
||||
| 06.09.2019, 07:55 | |
|
Помогаю со студенческими работами здесь
60
В php из python, работу невозможно найти новичкам python. Может перейти? Есть безпроблемный хостинг для php? Форум >web-программистов > PHP > PHP для начинающих. Как такое сделать? Какие бесплатные ресурсы можете посоветовать для изучения Python в плане Web? Php, python или ruby для веб парсинга PHP vs Python+Django для разработки социальной сети Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации:
В классе Работник добавить:
накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни
коэффициентПрезентеизма — снижает продуктивность. . .
|
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день.
Для работы необходим браузер,. . .
|