Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/47: Рейтинг темы: голосов - 47, средняя оценка - 4.53
0 / 1 / 0
Регистрация: 24.06.2019
Сообщений: 23

PHP vs Python для WEB

05.08.2019, 17:56. Показов 11205. Ответов 90
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
В последнее время наиболее популярным становится дискуссия: PHP vs Python для WEB
Python прост, удобен. При этом позволяет разработку приложений других направлений.
Но и PHP не сдаёт позиции. По производительности PHP 7.3 опережает Django!
Хочу спросить ваше мнение. Что на сегодняшний день перспективно изучать для WEB Backend?
Какие преимущества и недостатки PHP и Python по вашему мнению?
Если говорить обо мне, то мне ближе C-подобный синтаксис. Python прост на столько, что бывает сложным.
Однако в Python привлекает возможность написания приложений с не объемным кодом.
Естественно, как вы понимаете, желательны ответы от имеющих опыт и в PHP и в Python.
Благодарю!
P.S.
В качестве фильтра-отсеивателя джунов, прошу кратко рассказать в ответе кто вы, чем занимаетесь в IT.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.08.2019, 17:56
Ответы с готовыми решениями:

PHP vs Python для карьеры
Здравствуйте. Через неделю заканчиваю школу. С лета, хочу начать усиленно изучать программирование и искать работу. Я оказался на...

PHP vs Python для работы
Здравствуйте. До сих пор я изучал программирование в основном для увлечения. Не более. Сейчас появилась срочная потребность в заработке....

PHP vs Python для Backend в 2019
Здравствуйте. Давайте халиварить! PHP vs Python для Backend в 2019. Обратите внимание. Аргументы типа "PHP только для веба, а...

90
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
05.09.2019, 09:34
Студворк — интернет-сервис помощи студентам
Usaga, извиняюсь, но мне показалось или Вы решили перейти об разговора о проблеме к обсуждению моей личности и чего я там путаю или нет? Вы, который попутал общее замечание о парадигме (ООП) с "я веду речь о C#"?

Тут есть игнор троллей? Нет - до свидания. Фи.
0
Эксперт .NET
 Аватар для Usaga
14341 / 9434 / 1358
Регистрация: 21.01.2016
Сообщений: 35,560
05.09.2019, 09:44
Arhat109, где я задел вашу личность? Если у вас кончились аргументы или вы что-то не поняли, то так и скажите. Детский садик с обиженными строить не надо.

Я вам простые примеры привёл, где ваше заявление про двойную косвенность не выпоняется. Вы не согласны?
0
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
05.09.2019, 09:56
Usaga, Я вам ответил на ваши примеры где мое заявление не выполняется. Они "не из той оперы", что Вы так и не поняли. Это - моя проблема или Ваша?

Цитата Сообщение от Usaga Посмотреть сообщение
ООП не относится к "диалекту". Это парадигма. А диалектом называют вариацию языка. Так, бывают диалекты С++ от разных производителей компиляторов. Или диалекты SQL от разных производителей СУБД. У вас каша в голове, раз вы такие вещи в одну кучу смешиваете.
Да вот, прямо тут. И, как только собеседник начинает рассказывать кому-либо что он типа "что-то путает" или у него "каша в голове" - это означает что он СЛИЛСЯ и в теме не шарит, пытаясь перевести стрелки на обсуждение личностей вместо вопросов темы.

Ещё раз - ДО СВИДАНИЯ.
0
Эксперт .NET
 Аватар для Usaga
14341 / 9434 / 1358
Регистрация: 21.01.2016
Сообщений: 35,560
05.09.2019, 10:02
Цитата Сообщение от Arhat109 Посмотреть сообщение
Я вам ответил на ваши примеры где мое заявление не выполняется. Они "не из той оперы", что Вы так и не поняли. Это - моя проблема или Ваша?
Из какой "не из той"? В вашем представлении ООП может быть только в присутствии наследования и композиции? В остальных случаях это "Си с классами"? Это не так.

Цитата Сообщение от Arhat109 Посмотреть сообщение
Да вот, прямо тут. И, как только собеседник начинает рассказывать кому-либо что он типа "что-то путает" или у него "каша в голове" - это означает что он СЛИЛСЯ и в теме не шарит, пытаясь перевести стрелки на обсуждение личностей вместо вопросов темы.
Нет. Я констатирую факт, что вы неверно воспринимаете некоторые понятия. В частности мутно и абстрактно видите ООП. Это и есть каша. А слился бы я, если бы молча убежал из темы оставив неотвеченным какие-то вопросы ко мне. Пока что сливаетесь только вы.

Цитата Сообщение от Arhat109 Посмотреть сообщение
Ещё раз - ДО СВИДАНИЯ.
Да, да. И вам всего доброго в вашем розовом мире, где ООП - диалект ЯВУ, а Паттерны противопоставляются ООП.
0
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3404 / 105
Регистрация: 24.05.2011
Сообщений: 14,639
Записей в блоге: 8
05.09.2019, 11:14
Arhat109, вы неверно воспринимаете слова Usaga в этом разговоре о ЯП. Вообще, он вас пытается вывести из круга ваших заблуждений относительно некоторых сущностей и категорий, применяемых в ЯП и троллить вас он не пытался, насколько я вижу по его тексту.
Зря вы на него обижаетесь, в общем. Лучше прислушайтесь и вы сможете понять глубже и правильнее.
1
Модератор
 Аватар для Curry
5161 / 3509 / 536
Регистрация: 01.06.2013
Сообщений: 7,618
Записей в блоге: 9
05.09.2019, 11:46
Цитата Сообщение от Arhat109 Посмотреть сообщение
Написание проги в 1 строку .. ну мне так нравится, скажем.
Это плохой стиль оформления программ, ведущий к плохой читаемости кода и ошибкам. Это не требования эстетов, а проверенный временем критерий. И если компилятор/интерпретатор нарушение такого подхода обнаруживает, это только хорошо.
Цитата Сообщение от Usaga Посмотреть сообщение
В вашем представлении ООП может быть только в присутствии наследования
В моём тоже. Иначе бы Haskell c Rust называли ООП языками. В них, из всех принципов ООП, нет только наследования.
0
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
05.09.2019, 12:03
NeoMatrix, как понимаю "с админом не спорят". Но .. перечитайте мой пост вдумчиво и реакцию оппонента и обнаружьте что она .. "поперечна". автор пишет не ответ на цитату, а ответ на нечто свое .. ещё и начинает тыкать носом про каши в голове, что я вообще считаю хамством и неуважением к собеседнику. У него у самого "каша", вот он и пытается о ней талдычить мимо кассы, уж извините, но мне это - не интересно и читать про то каша у меня в голове или я что-то не понимаю .. пусть своей бабушке рассказывает.

Добавлено через 14 минут
Curry, конечно плохой стиль, кто-бы спорил. Ещё выдирает глаз техника "обратных отступов", когда вложенный код смещается влево, а не вправо как обычно. Но, иной раз .. как раз, чтобы выдирало глаз нечто не очевидное .. ну вы понимаете, в общем.

ООП - парадигма, состоящая из нескольких "умных мыслей", по крайней мере со слов самого Страуструпа, насколько помню... наследование из них - и есть "революция ООП", которая перевернула процедурное программирование "с ног на голову": данные (объекты) стали важнее действий над ними (функции). И если раньше мы говорили "программа делает то-то и это над такими данными, такого формата", то теперь всех приучили к обратному "объект ИМЕЕТ методы и МОЖЕТ сделать то-то и то-то".

Пассивный элемент программ стал .. активным. Делов-то (* то, что после компилятора получается ровно тоже самое - в общем-то мелочи *)

Поэтому всякий раз, когда речь идет про "ООП", лично сам понимаю что речь идет о наследовании и виртуальных функциях. И, если в программе нет виртуализации - это не ООП, а "чистый Си" и пофиг на каком языке. Точно также как отличаются "стихи" и "проза" безотносительно языка.
0
88 / 108 / 6
Регистрация: 16.04.2019
Сообщений: 451
Записей в блоге: 4
05.09.2019, 12:04
Цитата Сообщение от Arhat109 Посмотреть сообщение
То есть Вы не в курсе наличия у Java JIT-компилятора? Сравнительные тесты для JAVA вообще-то приводят в этом режиме.
Я то в курсе, поэтому и хотел узнать что вы подразумеваете под "производительностью".
Цитата Сообщение от Arhat109 Посмотреть сообщение
Никакой "хайлоад" не возможен на языках - интерпретаторах. Потеря производительности в самом интерпретаторе редко меньше чем 100 раз от ассемблера.

Не по теме:

P.S. Выделяйте текст чужого сообщения и нажимайте кнопку "Цитировать".

0
Эксперт .NET
 Аватар для Usaga
14341 / 9434 / 1358
Регистрация: 21.01.2016
Сообщений: 35,560
05.09.2019, 12:08
Цитата Сообщение от Curry Посмотреть сообщение
В моём тоже. Иначе бы Haskell c Rust называли ООП языками. В них, из всех принципов ООП, нет только наследования.
Это не совсем верное представление. Если вам язык позволяет своими средствами выделить умозрительную концепцию в виде некоторого юнита\класса\whatever, то это уже про объектную-ориентированность. Наследование не определяющий фактор.

Arhat109, вместо того, чтобы красочно вызрываться этомциями, вы могли бы конструктивно и аргументированно указать мне на неправоту Но раз этого нет, то, видимо, я в чём-то да прав, не находите?

Добавлено через 2 минуты
Цитата Сообщение от Arhat109 Посмотреть сообщение
Поэтому всякий раз, когда речь идет про "ООП", лично сам понимаю что речь идет о наследовании и виртуальных функциях. И, если в программе нет виртуализации - это не ООП, а "чистый Си" и пофиг на каком языке. Точно также как отличаются "стихи" и "проза" безотносительно языка.
Почему "по этому"? По цитате страуструпа о наследовании? Т.е. наличия концепции в виде состояния и поведения, но без наследования не достаточно? Объект должен быть сложнее, чем надо, чтобы стать объектом?
1
Модератор
 Аватар для Curry
5161 / 3509 / 536
Регистрация: 01.06.2013
Сообщений: 7,618
Записей в блоге: 9
05.09.2019, 12:16
Цитата Сообщение от Usaga Посмотреть сообщение
Если вам язык позволяет своими средствами выделить умозрительную концепцию в виде некоторого юнита\класса\whatever, то это уже про объектную-ориентированность.
Я конкретные языки привёл потом у что по ним можно проследить считают ли их ООПешными множество авторитетных людей включая авторов. Ну и не считают они их объектно-ориентированными. Почему? Потому что наследования нет. Отсюда вывод: наследование определяющий фактор. А вот инкапсуляция, например, не определяющий фактор, т.к. js называют объектно-ориентированным.
1
Эксперт .NET
 Аватар для Usaga
14341 / 9434 / 1358
Регистрация: 21.01.2016
Сообщений: 35,560
05.09.2019, 12:20
Curry, т.е. авторитетное мнение кого-то вам важнее того, что вы своими глазами сами можете увидеть? Или это больше вопрос о терминологии, а не практической стороне?
0
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
05.09.2019, 12:31
Usaga, поясните каким способом "концепция состояния и поведения" делает набор данных .. "объектом ООП"? Вам "событийное программирование" на Ассемблере - знакомо?
0
Эксперт .NET
 Аватар для Usaga
14341 / 9434 / 1358
Регистрация: 21.01.2016
Сообщений: 35,560
05.09.2019, 12:42
Цитата Сообщение от Arhat109 Посмотреть сообщение
делает набор данных ..
А про поведение забыли?

Цитата Сообщение от Arhat109 Посмотреть сообщение
"концепция состояния и поведения"
Речь не о анемичной модели. Не о пассивной структуре. А об объекте с поведением, который отражает некоторую концепцию из модели предметной области. Простейший пример:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class MTSPhoneNumber
{
    public string Number { get; private set; }
 
    private MTSPhoneNumber(string number)
    {
        Number = number;
    }
 
    public static MTSPhoneNumber Create(string number)
    {
        if (number?.StartWith("8-913-") == true)
        {
             return new MTSPhoneNumber(number);
        }
        throw new InvalidPhoneNumber();
    }
}
Простая концепция номера телефона строго оператора МТС (да, номер не полностью проверяется, для упрощения). Это объект с состоянием (номером телефона) и поведением (он не даст создать свой экземпляр с кривым номером). Никакого наследования. Никакой композиции. Но полностью и однозначно несущий на себе идею номера телефона. При этом ещё и с типизацией строгой. Сюда же можно добавить код сравнения номеров и их форматирования. И много ещё чего.

Имеем объект с данными и поведением. Работа с объектами не входит в объектно-ориентированное программирование? Или вы тут видите "Си с классами"?

Тут мы явно и чётко моделируем некую систему с помощью объектов классов. Если мы это можем, то это уже объектная ориентированность. И всё равно, кто там что заявляет. Или я не прав?
0
Модератор
 Аватар для Curry
5161 / 3509 / 536
Регистрация: 01.06.2013
Сообщений: 7,618
Записей в блоге: 9
05.09.2019, 12:47
Цитата Сообщение от Usaga Посмотреть сообщение
авторитетное мнение кого-то вам важнее того, что вы своими глазами сами можете увидеть?
В данном случае апеллирование к авторитетам приемлемо. Что толку если я напишу что считаю наследование неотъемлемым принципом ООП. Вот, написал.
Цитата Сообщение от Usaga Посмотреть сообщение
Или это больше вопрос о терминологии, а не практической стороне?
"Прежде чем спорить, давайте договоримся о терминах" (с) Вольтер. А с практической стороны, "своими глазами" я должен увидеть какое то противоречие?

Добавлено через 3 минуты
Например, сишные FILE* или хендлы WinAPI то же себе сущности, но если считать что и это ООП, то тогда ООП окажется всё и в этом не будет смысла.
0
Эксперт .NET
 Аватар для Usaga
14341 / 9434 / 1358
Регистрация: 21.01.2016
Сообщений: 35,560
05.09.2019, 12:50
Curry, это простые структуры данных. Не объекты. Они даже концепций в себе никаких не несут. Просто сборник атрибутов для более удобной передачи по указателю.
0
Модератор
 Аватар для Curry
5161 / 3509 / 536
Регистрация: 01.06.2013
Сообщений: 7,618
Записей в блоге: 9
05.09.2019, 12:56
Цитата Сообщение от Usaga Посмотреть сообщение
Curry, это простые структуры данных. Не объекты. Они даже концепций в себе никаких не несут.
Вовсе нет. Они инкапсулируют внутреннюю структуру, скрывают детали реализации, вы не можете создать их не используя прилагаемые к ним функции. В этих функциях производится проверка аргументов, так что что угодно вы не создадите.
А дальше вопрос терминологии.
1
Эксперт .NET
 Аватар для Usaga
14341 / 9434 / 1358
Регистрация: 21.01.2016
Сообщений: 35,560
05.09.2019, 13:09
Curry, где детали реализации? В структуре FILE? Вы в этом уверены? А WinAPI - это вообще функции. Какой-то такой себе пример вы привели.
0
56 / 20 / 2
Регистрация: 18.06.2018
Сообщений: 199
05.09.2019, 13:13
Цитата Сообщение от Usaga Посмотреть сообщение
Имеем объект с данными и поведением. Работа с объектами не входит в объектно-ориентированное программирование? Или вы тут видите "Си с классами"?
Тут мы явно и чётко моделируем некую систему с помощью объектов классов. Если мы это можем, то это уже объектная ориентированность. И всё равно, кто там что заявляет. Или я не прав?
Usaga, конечно! Это и есть "Си с классами":

Выделяем в отдельный файлик, дабы квалификатор работал полноценно, ну и доп. ограничиваемся количеством ваших т.н. "объектов", скажем в 10шт (можно вынести за скобки, не суть важно, не про это тут):

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef __MTSProneNumber
  #define __MTSPhoneNumber "module included"
 
  #ifndef MAX_MTC_PHONES
    #define MAX_MTS_PHONES 10
  #endif
 
  #define MAX_PHONE_LENGTH 10
 
  typedef struct _phone_string_ {
    char number[MAX_PHONE_LENGTH];
  } PhoneString;
 
  // инкапсулироуем "объекты" и их счетчик классификатором static (доступ только из этого файла)
  // объявляем "пул объектов" - МТС телефоны, сколько надо
  static int maxPhones = 0;
  static PhoneString MtsPhones[MAX_MTS_PHONES];
 
  PhoneString * newMtsPhone(char * number)
  {
    if( maxPhones >= MAX_MTS_PHONES ){ return NULL; } // память закончилась, увы..
    
    memcopy(number, MtsPhones[maxPhones].number);
    return &MtsPhones[maxPhones++].number;
  }
 
  PhoneString * createMtsPhone(char * number)
  {
    // в общем-то тоже самое .. если в начале строки есть подстрока, то ..
  }
#endif // __MTSProneNumber
Как-то так, навскидку ..
Имеем тот же запрет на прямой доступ, тот же набор "методов", привязанных к этому файлу .. то бишь "поведение".

Где тут "объект"?
0
Модератор
 Аватар для Curry
5161 / 3509 / 536
Регистрация: 01.06.2013
Сообщений: 7,618
Записей в блоге: 9
05.09.2019, 13:29
Цитата Сообщение от Usaga Посмотреть сообщение
где детали реализации? В структуре FILE? Вы в этом уверены?
Да. Кол-во полей структуры FILE и их типы, детали реализации, не стандартизованы и сильно отличаются для разных компиляторов. Но, тем не менее, можно пользоваться стандартными fopen, fclose и пр. для любых компиляторов С.
Цитата Сообщение от Usaga Посмотреть сообщение
А WinAPI - это вообще функции.
Со прилагающимися к ним типами.
А ваш пример можно переписать
C
1
2
3
4
5
6
7
typedef struct {
     char* Number;
}MTSPhoneNumber;
 
MTSPhoneNumber* CreateMTSPhoneNumber(char* number){
 
}
Прямо как с FILE.
0
Эксперт .NET
 Аватар для Usaga
14341 / 9434 / 1358
Регистрация: 21.01.2016
Сообщений: 35,560
05.09.2019, 13:32
Arhat109, у вас данные в одном месте (структуре), а функции с ними работающие - в другом. Более того, PhoneString никак своё состояние не закрывает от изменения извне и нарушения её инварианта. Это классический процедурный подход.

Пользователю структуры PhoneString придётся искать, где находятся функции для работы с ней. Да и PhoneString это вообще телефон в целом, а не только МТС.

Идея номера телефона МТС размазана по коду. А само состояние PhoneString никак не защищено от повреждения.

Это не тоже самое. Вообще.

Добавлено через 2 минуты
Цитата Сообщение от Curry Посмотреть сообщение
Да. Кол-во полей структуры FILE и их типы, детали реализации, не стандартизованы и сильно отличаются для разных компиляторов. Но, тем не менее, можно пользоваться стандартными fopen, fclose и пр. для любых компиляторов С.
Это всё прописано в заголовочных файлах. Сама структура никакой концепции не выражает. Никакого поведения не имеет. Просто атрибуты собранные в одну кучу для удобства. Её можно заменить на хэндлер HANDLE и будет ровно тоже самое.

Цитата Сообщение от Curry Посмотреть сообщение
Со прилагающимися к ним типами.
С простыми структурами как тот же FILE упомянутый ранее.

Цитата Сообщение от Curry Посмотреть сообщение
А ваш пример можно переписать
Нельзя. Поведение отдельно от данных. Данные не закрыты. Это не объект. Только имитация.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.09.2019, 13:32
Помогаю со студенческими работами здесь

В php из python, работу невозможно найти новичкам python. Может перейти? Есть безпроблемный хостинг для php?
Безпроблемный хостинг - значит не будет проблем таких, как в heroku. У меня в компе сайт работает без проблем на локалке. Но при загрузке...

Форум >web-программистов > PHP > PHP для начинающих. Как такое сделать?
Форум >web-программистов > PHP > PHP для начинающих...... Как такое сделать? что бы автоматически по категориям расписывалось! начал...

Какие бесплатные ресурсы можете посоветовать для изучения Python в плане Web?
Доброго времени суток, формчане. Какие бесплатные ресурсы можете посоветовать для изучения Python в плане Web? Хочу научиться писать...

Php, python или ruby для веб парсинга
Добрый день! Есть задача написать парсер сайта. Функционал парсера самый обычный, собирать указанную информацию со страниц. Меня интересует...

PHP vs Python+Django для разработки социальной сети
Здравствуйте. Долго думал, в какой раздел поместить эту тему. Решил всё же сюда. Кто меня знает, те знают, что раньше я выбирал язык...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
[golang] Двоичная куча, min-heap
alhaos 20.05.2026
Двоичная куча Двоичная куча — структура данных, которая всегда держит самый важный элемент наготове. Представьте очередь к хилеру в игре, и очередь из игроков в приоритете те у кого меньше. . .
[golang] Breadth-First Search
alhaos 19.05.2026
BFS (Breadth-First Search) — это базовый алгоритм обхода графа в ширину, который поуровнево исследует все связанные вершины. Он начинает с выбранной точки и проверяет всех соседей, прежде чем. . .
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru