LINUX.ORG.RU
Ответ на: комментарий от Im_not_a_robot

Вот и выходит что прежде чем начать пользоваться вимом надо с ним возиться пол года, шлифовать под себя и только потом код начинать писать. А PyCharm взял, скачал и начал сразу бахать.

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

Не так уж и элементарно. Есть эмуляторы терминала, а есть системы где иксов нет. Там ЕМНИП разный код нужен для определения раскладки. Короче я на сишке писал программку-переключалку и как-то её костылями внедрял, но потом забил на вим и уже не помню где оно у меня лежит.

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

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

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

а есть системы где иксов нет

На таких системах я даже не знаю как она переключается, да и зачем? Если попадется файл с кириллическим именем, то в крайнем случае его можно дотыкать Табом. У тебя, мягко говоря, весьма странный случай.

Например, в расширении Vim для VsCode есть даже вот такие настройки https://imgur.com/hNGZwHq (которому, почему-то, надо указывать абсолютный путь, иначе не работает). Пишешь туда программу переключалку и он сам делает то, что надо. Точно так же у меня сделано в nvim, только автокоманды при входе/выходе в Normal/Insert Mode.

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

И каждый день вдумчиво просматривает все коммиты десятка других членов команды в проекте на несколько сотен тысяч строк кода?

Как насчёт нескольких MLOC? И таки не поверите - но каждый раз когда я делаю релиз я по крайней мере «наискосок» просматриваю какие конкретно изменения в него вошли, чтобы хотя бы примерно знать где ожидать потенциальных проблем, и куда копать если вдруг ночью начинают вызванивать operations потому как что-то там «взорвалось».

Такая система будет не масштабироваться горизонтально, потому что у такого программиста будет падать производительность пропорционально количеству разработчиков в команде.

Всё относительно. В конторе порядка 2k разрабов, из них пара сотен каждую неделю трогает код который так или иначе влияет на (влинковывается в) модули за которые отвечаю непосредственно я. Для Вас это много или мало? Я к тому что по факту - не замедляет.

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

что прежде чем начать пользоваться вимом надо с ним возиться пол года

Это правда - адаптация занимает какое-то время.

шлифовать под себя и только потом код начинать писать.

А вот здесь позволю себе не согласиться. Спустя 20+ лет - кастомизаций у меня с «гулькину пипиську».

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

не пережила бы даже первую попытку компиляции

Как будто это что-то хорошее. Время на компиляцию при этом всё равно тратится, а результат не получается. Без контроля типов ты можешь запустить тесты в любом случае и получить полный отчёт по всем проблемам, включая и те что вызваны типами.

Ну и в более широком контексте. Для бизнеса выгоднее иметь приложение которое работает криво, чем приложение которое не работает совсем (даже не компиляется). Тут так: кто первый встал, того и тапки. Поэтому например пока растоманы дрочат на безопасность, кресты просто работают.

поддержка программной системы

Требования бизнеса меняются очень часто и порой очень радикально. Система типов тут только обуза. Типы как сущности (а не как утилитарный приём для выделения памяти) хороши в академических рассуждениях и доказательствах корректности. Но в реальной жизни нет корректных программ.

И вообще, если вы такие умные, почему такие бедные если бы типы и программирование на типах были такие замечательные, то все бы писали на Хаскеле или Окамле. Ну и где? Рассказывать про типы в контексте жабки и .net просто смешно, это не самая сильная их сторона (разве что возможность использовать сырые анбокснутые типы для скорости, но это другая история).

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)

Компании, которые сейчас пишут такие вещи появились где-то в 95-00 годах. У них уже есть свои наработки, опытные тимлиды/сеньоры/архитекторы/аналитики. Менять весь стек разработки на другой пока сильно дороже, чем использовать текущий.

dicos ★★
()

А откуда такая информация? статистику бы увидеть, хотя вначале нужно понять что же такое «крупный бекенд». Монолитная какаха?

ну и:

  1. Сколько этих крупных бекендов? Сколько мелких?
  2. Какое количество крупных на C#/Java? Какое количество на других языках?

в моем текущем проекте с «крупным бекендом» например большая часть на C++ написана, меньшая на Python и PHP (уэб).

прошлый проект - Python и Java.

позапрошлый - Go.

все «крупные бекенды» !

umren ★★★★★
()
Последнее исправление: umren (всего исправлений: 1)

Тут почему-то вспоминают только про типизацию. Но ошибки кроме того могут быть связаны с интерпретируемостью. Поясню на простом примере:

flag = True

if flag:
    a = 5
    print(a + 3)
else:
    print(a + 4)

Этот пример запустится и выведет 8. Тем не менее, в коде есть ошибка, которая проявится, только если пойти по else-ветке. Конечно, есть внешние анализаторы, есть юнит-тесты. Но сам интерпретатор такое не ловит.

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

Тут дело не в асбтрактной «интерпретируемости», а о вполне конкретном косяке в дизайне Python: отсутствии деклараций локальны переменных. Аналогичный код на Perl не скомпилируется:

use strict;
my $flag = 1;

if ($flag) {
    my $var = 5;
    print($var + 3);
} else {
    print($var + 4);
}
$ perl -c test.pl 
Global symbol "$var" requires explicit package name (did you forget to declare "my $var"?) at test.pl line 10.
test.pl had compilation errors.
annulen ★★★★★
()
Ответ на: комментарий от annulen

Noverify для php где нету отдельного объявления легко находит. Подобные ошибки возможны и в Java, неправильный тип объекта, null, итд.

13:50:19 Linting
<critical> ERROR   undefinedVariable: Cannot find referenced variable $a
  echo $a + 4;
       ^^
13:50:19 Found 1 critical and 0 minor issues.

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

Noverify для php где нету отдельного объявления легко находит

Одно дело, когда нужно использовать анализатор, и другое дело, когда код не запустится

Подобные ошибки возможны и в Java, неправильный тип объекта, null, итд.

Но все-таки нельзя опечататься в имени переменной и получить компилирующийся код. Или перенести из другого места код, ссылавшийся на локальную переменную, забыв при этом перенести объявление переменной, и автоматически получить переменную с более узкой областью видимости.

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

У меня perl 5.30.0 спокойно выводит восьмёрку. Естественно, если убрать use strict, которого не было в 4-й версии, если верить обсуждению на stackoverflow:

Perl 4 didn’t have strict at all, and there are most likely still scripts out there originally written for Perl 4 that still work fine with Perl 5. Making strict automatic would break those scripts. The situation is even worse for one-liners, many of which don’t bother to declare variables. Making one-liners strict by default would break probably millions of shell scripts and Makefiles out there.

То есть use strict используется не везде.

Как я понимаю, в Перл встроили простенький статический анализатор, который запускается до интерпретатора. Это хорошо, но не доказывает, что проблема не в интерпретируемости.

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

Естественно, если убрать use strict, которого не было в 4-й версии

5-я версия, на минуточку, вышла в 1994 году. Любой адекватный код, написанный в этом тысячелетии, использует strict.

Как я понимаю, в Перл встроили простенький статический анализатор, который запускается до интерпретатора

Нет, use strict это более современные правила синтаксиса. Включается автоматически, если сделать use v5.12 или выше.

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

В любом случае, обсуждаемая проблема с ветвлением - это не уникальная особенность Питона, раз даже в Перле её можно воспроизвести. Проверил ещё Руби на Годболте. Работает такой код без проблем:

flag = true
if flag then
    a = 5
    puts a + 3
else
    puts a + 4
end
Kogrom
()
Ответ на: комментарий от Kogrom

Да, к сожалению, шиза с возможностью использования необъявленных переменных есть во многих интерпретируемых языках. Например, в Lua локальные переменные должны обязательно объявлять, что позволяет (как и в Perl) иметь полноценные лямбды - но глобальные переменные могут вводиться без объявления. Единственно правильный подход, на мой взгляд - это принудительно объявлять все, как в Perl или в JS с use strict

annulen ★★★★★
()

«„“ одним константа - другим переменная »«»

успешность исполнение 1-ветки при ошибке исполнения 0-ветки - это произвольное решение дилеммы определения границ области определения продуктивных значений частично рекурсивной функции

всё упирается в раннее vs позднее vs «сверху вниз наискосок» связывание между именами(символами) и их значениями - если вообще есть такое различение

в «сверх»-компилируемых системах символ совпадает со своим значением - что ускоряет и при этом делает таковые системы ригидными абсолютно

в «сверх»-интерпретируемых не предсказуема степень предсказуемости будущего - т.е таковые системы магичны и вне-научны

вопрос баланса как(где==когда) осуществлять валидации

qulinxao3 ★★
()
Последнее исправление: qulinxao3 (всего исправлений: 2)
Ответ на: комментарий от metalbeaver

Если я пишу на js, то знаю, что 1+‘1’ = 11)

А на самом деле 1+‘1’ = ‘11’

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

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

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

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

На таких системах я даже не знаю как она переключается, да и зачем?

весело машем и передаём привет всем госконторам с линупсом, где обязательно должен быть российский дистрибутив

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

The Java language provides special support for the string concatenation operator +, and for conversion of other objects to strings. String concatenation is implemented through the StringBuilder(or StringBuffer) class and its append method. String conversions are implemented through the method toString(), defined by Object and inherited by all classes in Java. For additional information on string concatenation and conversion, see Gosling, Joy, and Steele, The Java Language Specification.

Сахарок никто не отменял.

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

а эт вопрос инструментированости консоли отладчика - уверен что в любом gdb pdb «jsdb» есть возможность и она осуществелена - функция строящая тем же graphviz’ом али ещ> каким AnyThing2svgOrHtmlOrEtc картинку графа состояния той или иной детальности той или иной части отлажаемого объекта

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

если кристаллизация (и рост качестве использования инструмента) продолжится что фаза экстенсивного роста файла cfg сопрограммится фазой консолидации настроек и так по раундробину кооперативно

qulinxao3 ★★
()

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

Но если говорить о том, что можно называть, то YouTube, Instagram, написаны на Python. Их точно нельзя назвать маленькими проектами.

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

emorozov
()

потому что, когда это все запиливали лет 20-30 назад, голанга с руби еще не было, питон использовался всякими хакерами для наколенных скриптов, PHP расшифровывался как «personal home pages», а жава с шарпом поддерживались Саном, Ораклом и Микрософтом.

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

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

… Но если говорить о том, что можно называть, то YouTube, Instagram, написаны на Python. Их точно нельзя назвать маленькими проектами. Что касается тех же банков, то это одна из самых консервативных отраслей, и решения в ней принимаются, думаю, чаще даже не из технических соображений.

Вот как раз в банках и прочих серьезных конторах решения принимаются исходя из весьма продуманных технических соображений - продуманных на годы вперед и с учетом полного жизненного цикла ПО. Просто число технических и организационных соображений, которые приходится принимать во внимание, существенно превосходит то, что обычно доступно сознанию передовых кодировщиков одного конкретного языка.

vinvlad ★★
()