Сопоставим ли PHP с Python по возможностям?

Sly32
На сайте с 29.03.2012
Offline
302
#81
Каширин #:

Значит у тебя не было экзотических ;) О, кстати, я не посчитал язык программирования калькулятора "Электроника МК-61" и язык сименсовского телефона, который называли "слик" :)

Баловался я с 54/61 - это не ЯП)

T7
На сайте с 19.09.2018
Offline
63
#82
Каширин #:
Так же могу сказать, что на любом языке можно сделать все, что можно сделать на другом.

Когда то, давно. Лет 30 назад. Попал я на курсы по паскалю. Там препод часто фразу повторял, что, по словам разработчиков,  на  паскале можно сделать все то, что можно на си. И продолжал - "Правда, компилятор паскаля сделан на си"

tp 5, 6  нет нигде 😀 С одной стороны теория про умирающие языки верна, но..

Каширин #:
Если на другом языке что-то сделать проще, или уже сделано

Мы в рамках  темы "Сопоставим ли PHP с Python по возможностям?"

Каков ответ?  Я думаю, скорее нет, чем да. Чаще сделать питоном проще, да и сделано там больше. Я долго переходил с пыха, но pymorphy2 (очень надо) + aiohttp. Правда, сейчас fastapi вместо aiohttp.

Это, к тому, что уже сделано кем то. Очевидно, что качественного опенсорса на питоне существенно больше количественно. С пыхом, костылями майстем а тут все под рукой.


Каширин #:
можно использовать несколько языков в одном проекте, как это часто и бывает. 

Это, да.

$__URL = 'http://4.lcl/1c?';

$steps = [
    'type=catalog&mode=checkauth',
    'type=catalog&mode=init',

    #'type=catalog&mode=file&filename=ajax.php',
    #'type=catalog&mode=file&filename=import_files/d9/d9ry559.jpg',

    #'type=catalog&mode=file&filename=1/offers.xml',
    #'type=catalog&mode=file&filename=1/import.xml',
    
    #'type=catalog&mode=file&filename=1cbitrix.zip',
    #'type=catalog&mode=file&filename=import.zip',
    'type=catalog&mode=file&filename=v8_3a67_1d12.zip',

    'type=catalog&mode=import&filename=import.xml',
    'type=catalog&mode=import&filename=offers.xml',

Эмулятор обмена с 1с. До сих пор на пыхе. Лет 10 уже.

Sly32 #:
Print(„-„ * 80)

Для начала сломается (Print != print, кавычки), потом, после исправления, 80 раз напечатает "-".

MyStem — Технологии Яндекса
  • yandex.ru
Программа MyStem производит морфологический анализ текста на русском языке.
Sly32
На сайте с 29.03.2012
Offline
302
#83
timo-71 #:

Когда то, давно. Лет 30 назад. Попал я на курсы по паскалю. Там препод часто фразу повторял, что, по словам разработчиков,  на  паскале можно сделать все то, что можно на си. И продолжал - "Правда, компилятор паскаля сделан на си"

tp 5, 6  нет нигде 😀 С одной стороны теория про умирающие языки верна, но..

Мы в рамках  темы "Сопоставим ли PHP с Python по возможностям?"

Каков ответ?  Я думаю, скорее нет, чем да. Чаще сделать питоном проще, да и сделано там больше. Я долго переходил с пыха, но pymorphy2 (очень надо) + aiohttp. Правда, сейчас fastapi вместо aiohttp.

Это, к тому, что уже сделано кем то. Очевидно, что качественного опенсорса на питоне существенно больше количественно. С пыхом, костылями майстем а тут все под рукой.


Это, да.

Эмулятор обмена с 1с. До сих пор на пыхе. Лет 10 уже.

Для начала сломается (Print != print, кавычки), потом, после исправления, 80 раз напечатает "-".

Ну, в общем-то и сам пайтон написан на плюсах) Т ут нет темы для спора) 

Не сомневался что уж ты-то прочитаешь пример. Это редактор с телефон подменил, а так-то и принт с маленькой должен быть и кавычки не такие. Я тоже счас с Fastapi разбираюсь. Что то ноавится, что то не очень. Может еще не вник. Роутинг в aiohttp красивее. 

А можешь привести реально рабочий пример асинхронного кода в фастапи?

Sly32
На сайте с 29.03.2012
Offline
302
#84
plab #:

Мне удобно видеть html код страницы целиком, одним файлом. А тут либо надо резать на куски-файлы и втыкать их в разные места кода питона. Или писать код извлечения определенных кусков html. Нафига, если с php всего этого не надо.

Я считаю извратом самописы, которые отдают в браузер .py файлы.

А чем это больший изврат, чем отдача php- файлов?  Стало интересно, заморочился - оказалось что чкрипт, который будет работать примерно так же как в  php - занимает пару строк

#!/bin/python
print("Content-type:text/html\r\n\r\n")
with open("cgi-bin/index.html", "r") as index:
    main_page = index.readlines()
clear_list = []
for row in main_page:
    clear_list.append(row.strip("\n").strip())
user = "Ivan"
users = "Customers"
for row in clear_list:
    print(eval("f'{}'".format(row)))

и обычный html файл получет контекст который формируется пайтоном. 

<html lang="en">
<body>
<h1>Hello {user}</h1>
<h3>Welcome here!!</h3>
</body>
</html>

Понятно что это извращение, на практике никогда такое на будет применяться, просто демонстрация что не все так сложно. На деле, шаблонизаторы - наше все))) Что Джанга, что Ларавел. Юзать вставки php - ну прям уже совсем отстой, имхо)

T7
На сайте с 19.09.2018
Offline
63
#85
Sly32 #:
Т ут нет темы для спора) 

А это не спор, но затейливое подтверждение теории об умирающих языках. Автор паскаля позиционировал как аналог си, а по питону никто так вопрос не ставит.

Sly32 #:
пример асинхронного кода в фастапи

Там нет особой разницы с аиохттп. На мой взгляд, надо избегать ситуации когда один асинк запрос ждет результат другого. AsyncIO где IO это ввод/вывод, во там и польза от него. 

Кстати, забавный пример: Есть файл со списком запросов на создание таблиц, индексов и прочих. Все по порядку, сначала таблица, потом запчасти для нее. До этого psycord, а тут asyncpg под рукой оказался. Стандартно

        async with self.pool.acquire() as conn:
            stmt = await conn.prepare(sql)
            async with conn.transaction():
                if len(data) > 0 and isinstance(data[0], (list, tuple)):
                    for args in data:
                        async for row in stmt.cursor(*args):
                            up_result(row)
....

Уууппс. Что то типа ОШИБКА:  отношение "......" не существует. Смотрю в файл, все норм. Потом допер - асинхронка, создание индекса запустилось раньше чем создана его таблица. Хотя в файле все по порядку...

По моему, очень наглядный пример. 


Скрин больше как пример того, что с одной стороны все просто, но есть детали..

request.state.tpl_file файл шаблона, типа того:

<!doctype html>
<html lang="{{ content.lang }}" class="no-js">
<head>
  <title>{{ content.title }}</title>
  
  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
  <meta charset="utf-8">        
        <meta name="description" content="{{ content.description }}">
    
  {% block head %}{% endblock %}
  
  <style>
    {% block root_css %}{% endblock %}
    {% include 'sys/dist/css/css.css' %}
    {% block custom_css %}{% endblock %}
  
</style>
  {{ meta.header_links }}    
  {{ meta.head_meta }}
  {% block head_ext %}{% endblock %}
</head>
<body>
  <header>{% block header %}{% endblock %}</header>
  {% block slider %}{% endblock %}
  <main>
    {{ content.breadcrumb }}        
    {% block attention %}{% endblock %}        
    {% block article %}{% endblock %}
    {% block hits_main %}{% endblock %}
    {% block aside %}{% endblock %}
    {% block related %}{% endblock %}
  </main>
  {% block hits_bottom %}{% endblock %}
  <footer>{% block footer %}{% endblock %}</footer>    
  {% block sys_elements %}{% endblock %}
  <script>
    const baseHost = "{{content.scheme}}://{{ content.base_host }}", cdnHost = "//{{ content.cdn_host }}",
    subDomain = '{{ content.sub }}', realURL = '{{ content.url }}', app = { is_ready: null },
    siteId = "{{ site_id }}", pageId = "{{ content.page_id }}";
    {{ content.start_js_code }}
    {% include 'sys/dist/index.js' %}
    {% block custom_js %}{% endblock %}
  
</script>
</body>
</html>

Тут писали о сложности запуска сайта на питоне, но нет:

# запуск, 
$ gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8090

# или типа того
$ ln -s /home/py39a/amtl/amtl_app.service /etc/systemd/system/amtl_app.service
$ systemctl start amtl_app
$ systemctl enable amtl_app

# amtl_app.service
[Unit]
Description=Gunicorn Daemon for FastAPI Application
After=network.target

[Service]
User=www
Group=www
WorkingDirectory=/home/py39a/amtl
ExecStart=/home/py39a/bin/gunicorn -c guniconf.py main:app
Restart=on-failure

[Install]
WantedBy=multi-user.target

#NGINX
upstream latest_app {
    server 0.0.0.0:8090 fail_timeout=0;
}

По мне, так проще некуда)




N3
На сайте с 04.07.2016
Online
81
#86
timo-71 #:

По мне, так проще некуда)

Объективно оцените ситуацию, я решил изучать язык для web, с чего мне проще начать, у меня как у большинства windows, для старта с php достаточно openserver экзешник скачать установить, в папку кинуть index.php и можно написать Hello world! Что нужно в таких условиях для старта с python?

Sly32
На сайте с 29.03.2012
Offline
302
#87

не нужен даже опенсервер)

python -m http.server --cgi и на 8000 порту ты получаешь свой Hello Word

N3
На сайте с 04.07.2016
Online
81
#88
Sly32 #:

не нужен даже опенсервер)

python -m http.server --cgi и на 8000 порту ты получаешь свой Hello Word

то есть cmd  python -m http.server --cgi

а винда спросит что за python

Sly32
На сайте с 29.03.2012
Offline
302
#89
nash300 #:

то есть cmd  python -m http.server --cgi

а винда спросит что за python

а что в винде по умолчанию нет пайтона? Я примерно с 2016 с виндой дел не имею) Ну поставить это пара минут) А вообще я даже работая с Вордпрессом использовал докер.

Но я не настаиваю - кто то любит морковку, кто-то эклер))) Как я уже не раз говорил, клепать сайтики под продажу ссылок мне давно неинтересно)

T7
На сайте с 19.09.2018
Offline
63
#90
nash300 #:
а винда спросит что за python
C виндой не друг, но гугл говорит, что можно инфу найти https://tyapk.ru/blog/post/python-virtual-environment-windows
Python. Виртуальное окружение в Windows
Python. Виртуальное окружение в Windows
  • 2023.03.11
  • Alexandr Vetrov
  • tyapk.ru
Виртуальное окружение в Python — способ изолировать зависимости (пакеты) для определённого проекта. Создание виртуального окружения Создаётся через модуль venv, который идёт в поставке Python 3. Используется команда "python −m venv" и название директории, в которой будет создано виртуальное окружение. Использование: Для...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий