LINUX.ORG.RU

Python или NodeJS

 , ,


0

2

Сейчас, как я вижу, NodeJS становится всё популярнее. В чём его плюсы? Что у него один и тот же язык с браузером? В npm много пакетов, наверно, применение JS сейчас очень широкое.

Или обработать генерируемую через JS веб-страницу. Наверно, лучше в таком случае использовать тот же самый язык? У безголового Firefox есть библиотеки для работы с питоном или NodeJS, но чтобы можно было работать с ним через bash, мне ничего не удалось найти.

Ответ на: комментарий от RedEyedMan666

В C++ я не лез, не оценивал насколько они сложные. Но судя даже по туторам для чайников – потребуется не один год, и даже не пару лет чтобы все это запомнить, усвоить и применять без ежесекундного заглядывания в справочник…

Все зависит от задач.
Проблема не в C++, а в том, что нужно знать как использовать разные libraries.
Вообщем много разной рутины, которую нужно знать.

anonymous
()
Ответ на: комментарий от anonymous

Вообщем много разной рутины, которую нужно знать.

В плюсах есть нюансы по типам, например. А не разбираясь в языке врядли можно безболезненно использовать библиотеки.

RedEyedMan666
()
Ответ на: комментарий от RedEyedMan666

Эй, тугодумка, ты когда IDE открываешь, что видишь? Правильно, редактор кода. По сути IDE это редактор обвешанный удобными тулзами и расширенным функционалом.

А ничего что редактор могут использовать вместо IDE и не всегда есть IDE под рукой? Я понимаю, что для фанбоя jetbrains и python эта мысль инородна. Как для нормального человека - решение проблем code style средствами языка. Но всё же. Редактор люди могут настроить по разному. Они могут использовать что угодно. Понимаешь, к чему я клоню?

Мазохистам такое только в радость.

Просто есть определённый пласт программистов, для которых понятие «культура кода» не пустой звук.

Я говорил, что язык должен располагать кодера к соблюдению форматирования, а ты сюда зачем-то говнокод примешал :DDD

В чем кроме отступов пидон этому способствует?

Спасибо, я в курсе, даже изучал как-то, но в моей практике он бесполезен. Если только разрабы Panda3D не перепишут движок на это твой никому не нужный на хаскель.

Расскажи о его ненужности Facebook. Они с удовольствием послушают)

silver-bullet-bfg ★★
()
Ответ на: комментарий от Kazun3500

А что в вашем понимании по умолчанию? Это в js, элемент языка может быть доступен, но по умолчанию отключен. В питоне в этом плане разницы нет.

Внезапно, было доступно с правкой в package.json, опция была false для совместимости.

Наличие возможности это сделать средствами стандартной библиотеки, написав минимум лишнего кода.

И что не позволила сделать стандартная библиотека Node?

Грубо, глупо, в корне неверно.

А как быть с человеком, которому три раза надо объяснять стандартный пул сообщений из ООП?

silver-bullet-bfg ★★
()
Ответ на: комментарий от RedEyedMan666

В общем, ты обычный питонохейтор, идешь бодренько в игнор и сиди там, перевирай мои сообщения сколько душе угодно :)

Я пойду поплачу, что меня гуманитарии добавляют в игнор и я не познаю, чем же пидон хорош), думаю да. Человек, писавший для него боевые сервисы мало знает о нём.

silver-bullet-bfg ★★
()
Ответ на: комментарий от RedEyedMan666

Зря шлангуешь. Я не из вашей федерашки. В моем развитии поможет игнор не умеющих читать и понимать, вроде тебя :)

Лучшая защита - нападение. Когда нет аргументов)

silver-bullet-bfg ★★
()
Ответ на: комментарий от silver-bullet-bfg

Я пойду поплачу, что меня гуманитарии добавляют в игнор и я не познаю,

«Отливая же мочу, я ужасно хохочу».

anonymous
()
Ответ на: комментарий от Octagon

Ок. Мой аргумент - архитектура языка создавалась без оглядки на возможность асинхронщины, весь код изначально должен быть синхронным, т.к. последовательный код проще понимать, чем асинхронный. Python создавался для обучения, а не для production, из-за чего много вещей в нём урезано до того уровня, который достаточен для понимания базовый вещей.

Asyncio же является надстройкой над C-библиотекой, ЕМНИП, плюс потребовала реализавции новых для языка сущностей. При этом не было на момент появления асинхронности в Python стандарта как должно было работать. Я могу вспомнить как минимум еще Twisted и Tornado, которые предложили свою реализацию этого сегмента языка. Стандарт принят не так давно, при этом язык до сих пор сохраняет разные реализации, которые в ближайшее время маловероятно что уйдут.

Поправь, если ошибаюсь.

silver-bullet-bfg ★★
()
Ответ на: комментарий от silver-bullet-bfg

А как быть с человеком, которому три раза надо объяснять стандартный пул сообщений из ООП?

Я про другое вообще то, ну ладно.

И что не позволила сделать стандартная библиотека Node?

Даты - datetime.timedelta который обеспечивает более менее человеческое сложение дат (тут ладно, вопрос спорный). Форматирование строк str.format (https://docs.python.org/3/library/string.html).

Так как насчет того, что пул сообщений, что в питоне, что в js будет очень похож друг на друга и будет отличаться только скоростью работы?

Kazun3500
()
Ответ на: комментарий от Kazun3500

Так никто не говорит, что на Python что-то нельзя написать/решить задачу. Разговор о том, что там где у более развитых языков есть для этого абстракции готовые, Python предлагает велосипед или затычку. Пользоваться этим можно, на там где это нужно часто - не надо использовать Python. А лучше переключиться на что-то более подходящее.

Язык - инструмент. Универсальных инструментов нет. Но пытаться провести исследования нового вируса с помощью детского микроскопа - такая себе затея. Можно, но нужно ли?

silver-bullet-bfg ★★
()
Ответ на: комментарий от silver-bullet-bfg

Деление людей на технарей и гуманитариев это и правда признак неадеквата. Ты думаешь, ты здесь первый такой, с такой манерой речи и аргументами. Нет.

И «усшеные специалисты за сотни нефти» (к которым ни я, ни, как теперь ясно, ты тоже, отношения не имеешь) так себя не ведут.

anonymous
()
Ответ на: комментарий от anonymous

Ну он дегенерат с комплексом неполноценности. Это стало очевидно еще пару страниц назад.

mimico
()
Ответ на: комментарий от Kazun3500

Я про другое вообще то, ну ладно.

Тогда не понял вас. Объясните. Быть может я херню сморозил.

Даты - datetime.timedelta который обеспечивает более менее человеческое сложение дат (тут ладно, вопрос спорный).

Вкусовщина. ИМХО как раз оно строшнее.

Форматирование строк str.format (https://docs.python.org/3/library/string.html).

Что именно из этого не получается сделать на JS стандартными средствами? Методов много, всё сравнивать лень, если честно.

Так как насчет того, что пул сообщений, что в питоне, что в js будет очень похож друг на друга и будет отличаться только скоростью работы?

Реализация пула вообще будет очень похожа на всех языках, если смотреть с точки зрения алгоритмов. Но в Node уже есть инструмент для этого (https://nodejs.org/api/events.html) + как раз та самая приватность (исключит возможность руками дёргать), на счёт Python я такого не помню.

silver-bullet-bfg ★★
()
Ответ на: комментарий от silver-bullet-bfg

Судить о том развит ли язык по наличию в нем определенных обстакций, не необходимых для всех без исключения? Как то не совсем логично, вам не кажется?

Kazun3500
()
Ответ на: комментарий от silver-bullet-bfg

Тогда не понял вас. Объясните. Быть может я херню сморозил. пидон-фанбой.

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

Что именно из этого не получается сделать на JS стандартными средствами? Методов много, всё сравнивать лень, если честно.

>>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
>>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
'2010-07-04 12:15:58'

>>> f = 2.325235634534
>>> '{:.2f}'.format(f)
'2.33'
>>> '{:.5f}'.format(f)
'2.32524'


>>> '{:<30}'.format('left aligned')
'left aligned                  '
>>> '{:>30}'.format('right aligned')
'                 right aligned'
>>> '{:^30}'.format('centered')
'           centered           '
>>> '{:*^30}'.format('centered')  # use '*' as a fill char
'***********centered***********'
Kazun3500
()
Последнее исправление: Kazun3500 (всего исправлений: 1)
Ответ на: комментарий от Kazun3500

Развитие языка не в последнюю очередь определяют «обстакции». А то и TP7 можно назвать развитым языком.

gedisdone ★★★
() автор топика
Ответ на: комментарий от Kazun3500

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

gedisdone ★★★
() автор топика
Ответ на: комментарий от silver-bullet-bfg

Asyncio же является надстройкой над C-библиотекой, ЕМНИП

Если вы про libuv, то это говоря бэкенд для asyncio, вместо которого может быть, что либо еще.

плюс потребовала реализавции новых для языка сущностей

не так, чтобы потребовала, они скорее нужны были в качестве ускорения работы + синтаксического сахара (могу быть немного не прав)

При этом не было на момент появления асинхронности в Python стандарта как должно было работать.

Все фичи подобного плана реализуются посредством нового PEP , что грубо говоря и есть стандарт. Сначала PEP, а потом реализация.

Kazun3500
()
Ответ на: комментарий от Kazun3500

Судить о том развит ли язык по наличию в нем определенных обстакций, не необходимых для всех без исключения? Как то не совсем логично, вам не кажется?

Обеспечение абстракций для минимизации связанности кода - нормальное требование к инструменту, ИМХО. С пулом - пример хороший. Это один из паттернов решения

silver-bullet-bfg ★★
()
Ответ на: комментарий от Kazun3500

не так, чтобы потребовала, они скорее нужны были в качестве ускорения работы + синтаксического сахара (могу быть немного не прав)

А разве до Promise были в Python? Не припомню.

Если вы про libuv, то это говоря бэкенд для asyncio, вместо которого может быть, что либо еще.

Да, про него. Это не так просто на самом деле, заменить будет.

Все фичи подобного плана реализуются посредством нового PEP , что грубо говоря и есть стандарт. Сначала PEP, а потом реализация.

Ну нормальный подход. Но Tornado, Twisted и Asyncio появились до внесения

silver-bullet-bfg ★★
()
Ответ на: комментарий от Kazun3500

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

Ну так и я не отрицаю, что Python в ряде задач лучше будет. Но надо быть объективным, его можно заменить на очень много языков. Основной критерий выбора Python будет цена поддержки/рабтруда.

По датам уже ответили) Повторяться не буду

silver-bullet-bfg ★★
()
Ответ на: комментарий от Kazun3500

Да, а как ещё? Иначе - это что-то нестабильное, нет гарантии, что это нечто не поменяется когда-нибудь

silver-bullet-bfg ★★
()
Ответ на: комментарий от silver-bullet-bfg

Изначально asyncio работало через генераторы, аналогично тому, что есть в js. Их заменили на async/await.

Если вы про libuv, то это говоря бэкенд для asyncio, вместо которого может быть, что либо еще.

Да, про него. Это не так просто на самом деле, заменить будет.

Насколько я знаю, сначала использовалась не libuv, а что то другое, потом, как раз таки примерно с выходом 3.5 добавили возможность использовать в качестве бэкенда ее.

Но Tornado, Twisted и Asyncio появились до внесения

Tornado, Twisted - да. Asyncio - https://www.python.org/dev/peps/pep-3156/ (о как, даже 3.3 оказывается)

Kazun3500
()
Ответ на: комментарий от mimico

Усложняем задачу. Плюс с датами нет от вас примера .

>>> '{dt:%Y-%m-%d %H:%M:%S} {dt:%m/%d/%Y} {amount:.2f}  {amount:.6f}  {text:>5}  {text:^5}  {text:*>5}'.format(dt=datetime.datetime(2010, 7, 4, 12, 15, 58), amount=2.2353242346, text='23')
'2010-07-04 12:15:58 07/04/2010 2.24  2.235324     23   23    ***23'```
Kazun3500
()
Последнее исправление: Kazun3500 (всего исправлений: 1)
Ответ на: комментарий от Kazun3500

За каждый следующий таск, плотите деньги.

Object.setPrototypeOf(Date.prototype, new Proxy({
    Y: 'getFullYear', m: 'getMonth', d: 'getDate', S: 'getSeconds', H: 'getHours', M: 'getMinutes'
}, {
    get(t, k, r){
        return (t[k] ? String(r[t[k]]?.()) : '').padStart(2, '0')
    }
}));


((dt = new Date(2010, 7, 4, 12, 15, 58), amount = 2.2353242346, text = '23') =>
    `${dt.Y}-${dt.m}-${dt.d} ${dt.H}:${dt.M}:${dt.S} ${dt.m}/${dt.d}/${dt.Y} ${amount.toFixed(2)} ${amount.toFixed(6)} ${text.padStart(5, ' ')} ${text.padStart(5, '*')}`)()

>>> "2010-07-04 12:15:58 07/04/2010 2.24 2.235324    23 ***23"
mimico
()
Последнее исправление: mimico (всего исправлений: 1)
Ответ на: комментарий от RedEyedMan666

По секрету скажу: лямбды применяются шире, чем ты думаешь. Тело всяких if и for это тоже по сути лямбда. Без них небось неудобно было бы кодить? Хотя возможно. Вот и питон немножко инвалид, но кое-где костылями его подперли.

bread
()
Ответ на: комментарий от silver-bullet-bfg

архитектура языка создавалась без оглядки на возможность асинхронщины, весь код изначально должен быть синхронным

Я считаю, что асинхронщина в принципе может не быть частью языка и спокойно себе существовать в виде отдельной библиотеки, как, например, в Clojure (пример маргинального языка, да).

Python создавался для обучения, а не для production

Это городская легенда.

Я могу вспомнить как минимум еще Twisted и Tornado, которые предложили свою реализацию этого сегмента языка.

Tornado был заточен исключительно под асинхронный сетевой I/O, в то время как asyncio - некоторый монстр общего назначения. Сейчас желающих использовать Tornado в новых проектах при наличии asyncio осталось не так много, по моим наблюдениям.

Если что, то я считаю, что любая парадигма асинхронного программирования, которая предлагает писать код, состоящий из кучи колбэков, одинаково страшна вне зависимости от языка, и тут python и js в этом плане ничем друг друга не лучше.

Octagon
()
Ответ на: комментарий от Octagon

Я считаю, что асинхронщина в принципе может не быть частью языка и спокойно себе существовать в виде отдельной библиотеки, как, например, в Clojure (пример маргинального языка, да).

Не считаю Clojure маргинальным языком. Согласен, могут быть. Но для этого абстракция должна или базироваться на более примитивных существующих, либо становиться частью языка, которая не противоречит первоначальному дизайну. Либо это уже правильно считать другим языком. По моему, асинхронность как таковая противоречит (т.к. является не явным).

Это городская легенда.

Расскажу об этом пацанам. А то они не знали.

Tornado был заточен исключительно под асинхронный сетевой I/O, в то время как asyncio - некоторый монстр общего назначения. Сейчас желающих использовать Tornado в новых проектах при наличии asyncio осталось не так много, по моим наблюдениям.

Всё равно есть legacy, есть куча проектов которые будут начинаться на Tornado, потому что команда знает его, а Asynciohttp не знает. Плюс есть фреймворки типа Vibora и Sanic, которые вообще вещи в себе. А есть еще Django, которая популярна среди мух и под капотом опять несёт свою реализацию и имеет свои абстракции. Получаем винегрет.

Если что, то я считаю, что любая парадигма асинхронного программирования, которая предлагает писать код, состоящий из кучи колбэков, одинаково страшна вне зависимости от языка, и тут python и js в этом плане ничем друг друга не лучше.

Вот тут согласен. Но пока лучше ничего не видел. Буду благодарен, если покажите

silver-bullet-bfg ★★
()
Ответ на: комментарий от Kazun3500

Насколько я знаю, сначала использовалась не libuv, а что то другое, потом, как раз таки примерно с выходом 3.5 добавили возможность использовать в качестве бэкенда ее.

Иными словами, т.к. изначально VM синхронная понадобился костыль в виде какого-то беккенда. Это не плохо, но ещё раз подвтерждает, что Python синхронный по своей природе язык. Это не плохо, это просто один из кучи синхронных языков.

Asyncio, цитата: «The asyncio module was designed in PEP 3156». Спроектированы async/await были в JS раньше. Тут вопрос реализации. Но почему для вас асинхронность это именно async/await? Они по сути - просто сахар. А раз так, то JS изначально был асинхронным, в момент выхода первой версии. Async/await просто дают возможность писать «плоско» любой код (что опять же, вкусовщина. Для меня Callbacs и Promises с then/catch проще читаются, чем async/await) и понижают порог вхождения, не более. Но нормально структурировать код можно хоть на callbacks. Опять же - если программист это не может сделать, вопрос к его квалификации.

Ну и тогда, раз асинхронность != async/await синтаксический сахар, когда там у питона появились генераторы, которые в прицыпе позволили использовать асинхронные функции? ЕМНИП с 3.3. А когда там JS вышел? Nuff said.

silver-bullet-bfg ★★
()
Ответ на: комментарий от silver-bullet-bfg

Навешивать колбеки можно было и в древнем питоне, только без лямбд это выливается в жонглирование миллионом мелких функций. Контролировать такой код сложновато, поэтому twisted не взлетел. Были бы в языке нормальные блоки, и получалось бы не хуже, чем в ноде. Ну и конечно синхронные API тоже проблема. Но ъто дело наживное, а вот дефект с блоками это навечно.

bread
()
Ответ на: комментарий от bread

Навешивать колбеки можно было и в древнем питоне, только без лямбд это выливается в жонглирование миллионом мелких функций. Контролировать такой код сложновато, поэтому twisted не взлетел. Были бы в языке нормальные блоки, и получалось бы не хуже, чем в ноде. Ну и конечно синхронные API тоже проблема. Но это дело наживное, а вот дефект с блоками это навечно

Это всё говно, когда нужно делать не поэтапную (последовательную) обработку, а разветвленную, типа «пройтись асинхронно по каждому элементу из ответа, после чего для половины из них сделать одну асинхронную обработку, а для всех остальных — другую» — в таком раскладе внезапно получается, что все эти замечательные переменные из внешних блоков оказываются видны непонятно кому и имеют непонятно какие значения. И тогда, внезапно, ты приходишь снова к созданию нескольких асинхронных функций/промисов заранее, чтобы потом их вызвать/ждать.

byko3y ★★★★
()
Ответ на: комментарий от silver-bullet-bfg

А без IDE хоть что-то напишите.

Но зачем страдать? Давай сразу в машинных кодах писать, нафиг компиляторы.

Как? Форматирование может быть корректным с точки зрения компилятора и не корректным с точки зрения человека

За то чтобы вообще форматирование было обязательным на уровне компилятора. Лучше мириться с косяками стандартизованного форматирования, чем иметь зоопарк оформления кода, когда в каждой библиотеке свои правила что и как делать, что способствует превращению любого оформления кода конечной программы, которая использует чуть больше одной библиотеки в какашку. Самый яркий пример C++, где вообще каждый как хочет, так и пишет.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от silver-bullet-bfg

Мсье, вы сами это утверждали выше. Ибо соблюдение культуры кода тоже является частью хорошего кода. Но таким благородным донам это не ведомо. Я понимаю. Сложно. Много букв читать, книжки там.

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

peregrine ★★★★★
()
Ответ на: комментарий от silver-bullet-bfg

Vimer’ы как-то обходятся без IDE. Sad but true.

Для hello world-ов, мимо vim-ер. Большой проект надо писать в удобной IDE. Исключение, когда удобной IDE нет или она по каким-то причинам не годится.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от bread

Навешивать колбеки можно было и в древнем питоне, только без лямбд это выливается в жонглирование миллионом мелких функций. Контролировать такой код сложновато, поэтому twisted не взлетел. Были бы в языке нормальные блоки, и получалось бы не хуже, чем в ноде. Ну и конечно синхронные API тоже проблема. Но ъто дело наживное, а вот дефект с блоками это навечно.

Не спорю. Но тут же спор «кто раньше». JS изначально был асинхронным, появился раньше Python. Если честно - я давно перестал понимать спор, просто накидываю на вентилятор. Python имеет свои минусы, JS свои. Апологеты и фанатики стараются применить один инструмент всюду. С такими весело спорить, иногда узнаётся что-то интересное.

Ну и да, возможность что-то сделать опять же не является показателем того, что экосистема языка готова для того, чтобы работать с асинхронными функциями и вызовами. Скажем - есть переменная, которая доступна и в синхронном и асинхронных функциях. Каким образом гарантировать, что её значение корректно? Promise помогут решить эту проблему

silver-bullet-bfg ★★
()
Ответ на: комментарий от peregrine

Для hello world-ов, мимо vim-ер. Большой проект надо писать в удобной IDE. Исключение, когда удобной IDE нет или она по каким-то причинам не годится.

Писал большие проекты на NodeJS на Vim’e (правда юзал SapceVim). Было удобнее б-гомерзкого WebStorm (до сих пор мутит от воспоминания).

Пересел позже на Comodo IDE, которая всё равно более легковесная, чем JetBrains (всё более легковесное, чем JetBrains) из-за того, чтобы было лень разбираться как это всё настроить в MacOS (каюсь, пришлось три месяца ей пользоваться). Потом свалил радостно на emacs и в душе не знаю, что умеет тот же JetBrains, чего не умеет emacs. Буду рад, если кто-то покажет, может я не правильно готовлю

silver-bullet-bfg ★★
()
Ответ на: комментарий от peregrine

Но зачем страдать? Давай сразу в машинных кодах писать, нафиг компиляторы.

Чаще всего IDE в которой всё «изкарбоки» приучает не думать. Мой знакомый джангист 3 года работал на Python+Django на PyCharm и понятия не имеет как завести новый проект (создать новый django app) без PyCharm. ИМХО это провал.

За то чтобы вообще форматирование было обязательным на уровне компилятора.

Ещё один. Чем linter не подходит?

Лучше мириться с косяками стандартизованного форматирования, чем иметь зоопарк оформления кода, когда в каждой библиотеке свои правила что и как делать, что способствует превращению любого оформления кода конечной программы, которая использует чуть больше одной библиотеки в какашку.

А может просто linter + стандартный конфиг? При этом, нормально, что разные стили форматирования есть. Это может быть обусловлено от желания или legacy, до вполне осознанного решения. Я понимаю, миллионы мух не могут ошибаться, но всё же.

Самый яркий пример C++, где вообще каждый как хочет, так и пишет.

Очень плохой пример. Давайте возьмём за основу язык с нормальным дизайном и без тонны костылей поверх. И будет отталкиваться в гипотезах от него, а не использовать в качестве эталона кусок от куска гуано

silver-bullet-bfg ★★
()
Последнее исправление: silver-bullet-bfg (всего исправлений: 1)
Ответ на: комментарий от silver-bullet-bfg

Про JS особо не могу сказать, не пишу на нём, так что не знаю что там с WebStorm и на каком уровне у него поддержка ноды. Но в целом, на примере таких языков как C++, C, Python, C# и Java на которых мне довелось пописать или поковыряться в чужом большом проекте (в случае Java это был Android), что-то более-менее приличное из vim-а слепить не получилось. Отладчик дерьмо, интеграция плагинов нулевая, автодополнение говёное, хотя за последние лет 5 ситуация улучшилась благодаря clang-у для C и C++, а самое главное, что из хорошего в IDE от JetBrains, чего нет больше нигде на том же уровне и удобстве, это инструменты для рефракторинга кода. Vim ни с какими плагинами не умеет переименовать функцию или переменную во всём коде, не прибегая к grep-у, особенно если есть одинаково названные переменные, но в разных областях видимости, а переименовать надо одну, а не все разом.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Большой проект надо писать в удобной IDE.

Да, причем сразу на жабе. IDE для питона? Не смешите. Там просто невозможно ничего придумать сверх того, что дает емакс/вим с интеграцией с внешними инструментами через LSP и т.п. Хотя и это все переоценено. Чтобы строгать код сгодится любой простой редактор, было б чем строгать. Для всего прочего включая отладку есть консольные инструменты.

bread
()
Ответ на: комментарий от silver-bullet-bfg

Чаще всего IDE в которой всё «изкарбоки» приучает не думать. Мой знакомый джангист 3 года работал на Python+Django на PyCharm и понятия не имеет как завести новый проект (создать новый django app) без PyCharm. ИМХО это провал.

ИМХО программисту надо думать над алгоритмом и решением задачи, а не над борьбой с инструментами, такими как синтаксис языка, особенностями платформы и прочим. О них приходится думать, когда не хватает производительности и только из-за этого с ними приходится мириться. В идеальном мире так быть не должно. IDE позволяет думать над этим меньше и это замечательно.

А может просто linter + стандартный конфиг?

Это один из велосипедов, который пытается привести код к одному стилю? Как он решает проблему РазнойНотации переменных_и_функций? Никак? А по хорошему это должно быть стандартизовано. Pycharm немного пинает разработчика в этом направлении и это славно.

Очень плохой пример. Давайте возьмём за основу язык с нормальным дизайном и без тонны костылей поверх. И будет отталкиваться в гипотезах от него, а не использовать в качестве эталона кусок от куска гуано

Давай возьмём Java или C#, картина та же. Понятно, что если взять какой-нибудь lua, на котором нет больших проектов и 1,5 недоразвитых IDE, то vim/emacs победят. Но есть смысл говорить только про промышленные языки с достаточно долгой историей стабильного синтаксиса и большими проектами. Вот на Rust, например, нет пока промышленной IDE, плагин для IDE от JetBrains не плох, но там ещё работать и работать. Но лет через 6-8 будет и на него крутая IDE, если количество проектов на нём будет расти.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

За то чтобы вообще форматирование было обязательным на уровне компилятора. Лучше мириться с косяками стандартизованного форматирования, чем иметь зоопарк оформления кода

Питон эту проблему не решает, потому что в скобках там можно точно так же творить любую дичь.

bread
()
Ответ на: комментарий от bread

Полностью не решает, но делает шаги в нужном направлении.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Когда ты не ноешь, а пишешь по делу - получается очень хорошо.

anonymous
()
Ответ на: комментарий от loki_

давно астериск на эрланг переписали?) он всегда на си был

Пожжи, серьёзно? Значит, я его с кем-то попутал. Извиняюсь.

hateyoufeel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.