|
0 / 1 / 0
Регистрация: 24.06.2019
Сообщений: 23
|
|
PHP vs Python для WEB05.08.2019, 17:56. Показов 11469. Ответов 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
|
|||
|
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,854
|
||||||||||||
| 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,782
|
||||
| 05.09.2019, 21:47 | ||||
|
Забавно, что пример эмуляции на Java там мало того, что заставляет руками классы прописывать в интерфейсе, так ещё и приводит к переполнению стека.
0
|
||||
|
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,854
|
|||||||||||
| 06.09.2019, 06:27 | |||||||||||
|
Добавлено через 19 минут albest, вообще, возьмите или C# или Java. Строгая типизация, JIT, языки общего назначения (знания можно будет переиспользовать). Нафига вам эти транслируемые языки с динамической типизацией? Кажутся проще для освоения?
0
|
|||||||||||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
|||
| 06.09.2019, 07:22 | |||
|
0
|
|||
|
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,854
|
|||
| 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,782
|
||||||
| 06.09.2019, 07:35 | ||||||
|
0
|
||||||
|
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,854
|
||||||
| 06.09.2019, 07:44 | ||||||
![]()
0
|
||||||
|
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
||
| 06.09.2019, 07:44 | ||
![]() В показанной Вам иллюстрации, во-первых Си, а не "плюсы", во-вторых, точно такой же самостоятельный код и объект-значение, и ничего никаким поиском искать не требуется. А вот, как только Вы к своему телефону добавите "дружественный класс" скажем ТелефонТЕЛЕ2, то вот тут-то как раз и приходится шариться поиском по всему проекту.. Вам, в качестве примера уже предлагась структура "Файл" из стандартной билиотеки Си. Есть хотя бы один программист Си, который бы искал или был бы способен ковыряться во внутренней структуре файлового заголовка, без исходников этой билиотеки? Много из них "ищут методы работы с файлом" полнотекстовым поиском? Вот зачем гнать откровенную пургу? Ну нее знаете Вы Си, не понимаете парадигму ООП, ну бывает. Её вообще мало кто понимает правильно.
0
|
||
|
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,854
|
||||||
| 06.09.2019, 07:50 | ||||||
|
0
|
||||||
|
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
|
|
| 06.09.2019, 07:51 | |
|
korvin_, простое наследование на Си решается и делается "на раз". Сложнее с виртуальным. Тут рекомендую смотреть на реализации первых компиляторов с С++. Они как раз силами препроцессора "переводили" код на С и потом он нормально компилировался обычным С-компилятором.
Писать на С как на С++ вполне можно. Гемморно - другой вопрос. Тут вопрос похоже чисто терминологический, "товарищ не понисмает", что ООП включает в себя наследование как НЕОБХОДИМОЕ условие, а вовсе не как "необязательное".
0
|
|
|
14731 / 9507 / 1362
Регистрация: 21.01.2016
Сообщений: 35,854
|
||||
| 06.09.2019, 07:55 | ||||
|
Добавлено через 1 минуту
0
|
||||
| 06.09.2019, 07:55 | |
|
В php из python, работу невозможно найти новичкам python. Может перейти? Есть безпроблемный хостинг для php? Форум >web-программистов > PHP > PHP для начинающих. Как такое сделать? Какие бесплатные ресурсы можете посоветовать для изучения Python в плане Web? Php, python или ruby для веб парсинга PHP vs Python+Django для разработки социальной сети Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|