LINUX.ORG.RU

Гвидо Ван Россум уходит на пенсию

 


2

3

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

Эти 6,5 лет Гвидо работал над Python и развивал культуру разработки Dropbox, которая переживала стадию перехода от стартапа в крупную компанию: был ментором, наставлял разработчиков писать понятный код и покрывать его хорошими тестами. Он также составил план перевода кодовой базы на python3 и начал воплощать его в жизнь.

Также занимался развитием mypy — статического анализатора Python-кода, который был изначально разработан другим сотрудником Dropbox, нанятым Гвидо.

Помимо этого был активным участником движения за привлечение женщин в IT.

>>> Подробности

anonymous

Проверено: a1batross ()
Последнее исправление: Deleted (всего исправлений: 5)

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

Где пример этой же функции на «более подходящем» языке?

Кстати, анон дело говорит. Пример «правильного» кода в студию!

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

Это не интерфейс либы. Вышеназванная функция используется в единственном месте прямо под своим объявлением. При чтении кода они будут рядом

Так там все функции такие, чувак. Там один файл на 4000 строк.

и, если чуть почистить код, можно даже докстринг не писать

Стоило догадаться

Очевидно, она отнимет время и замусорит код, а что именно она даст?

Как минимум, ментальное спокойствие. Уверенность, ничего не сломается в одном месте, когда будешь делать какие-то изменения в другом. Впрочем, какие там изменения во write-only коде

Где пример этой же функции на «более подходящем» языке?

interface ProcessInfo {
  user: string;
  dbus: string;
  display: string;
}

function getProcessInfo(pid: number): ProcessInfo | null {
  ...
}

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

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

Вышеназванная функция используется в единственном месте прямо под своим объявлением

Хер там. Кортеж, как он есть, сохраняется в список и расползается по всей програме

https://github.com/hakavlad/nohang/blob/master/nohang/nohang#L136

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

но если возникает необходимость, то можно работать и в любом редакторе с подсветкой кода. Динамика - тебе увы, не дано такое

Он еще и гордится этим! Пол мегабайта скриптухи и блокнот. Остановите землю, я сойду. Надеюсь в коде sk1 нет функций, работающих с файловой системой

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

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

А что, dict из петона выкинули?

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

Так оно еще уже кортежей. Индексация строками. Никаких гарантий, что твой d[«yoba»] существует, что ты не опечатался и т. д.

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

Почему поля идут в порядке [USER, DBUS, DISPLAY]?

Потому что я принял такой порядок.

Где узнать что они именно в этом порядке?

  1. Из самого кода:
 return user.partition('USER=')[2], display, dbus
  1. Из докстринга.

Что будет, если кодер захочет переставить местами USER и DBUS?

Нормальный кодер догадается, что менять порядок - плохая и бессмысленная идея.

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

А еще лучше заделать глобальных констант PI_YOBA = ‘YOBA’, и индексироваться по ним!

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

Со временем поймешь какой это детский сад :)

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

твоя функция срет в логи

Срет в логи раз в сто лет. Это никому не мешает.

вместо того, чтобы бросать исключения

Она их не бросает, она их обрабатывает. Процессы с неподходящими env’ами просто пропускаются, они не нужны.

расползается по всей програме

Сударь, вы несете какую-то чепуху.

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

по опросам на SO, самый любимый язык у разрабов это Rust

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

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

Лучше посмотри статистику гитхаба и узри, что кодеры предпочитают «динамическое говнецо из 90-х». Странно, ведь спунбоб постановил всё это закопать. Непорядок!

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

Вот и ответь - готов ты участвовать в проектах, о которых известно, что они затянутся на лет 20-30? Вот потому и выбирается питон, в котором код пишется по соглашению. А дебилы, путающие порядок данных, просто не привлекаются к работе.

Чувак с галеры тебя не понимает. У него единственная важная метрика - максимальная защита от дурака соседа по веслу. В такой системе координат обмазываться с ног до головы аннотациями это единственный способ выжить. Странно только, что они все делают в «скриптухе»? Есть же жабка - идеальный язык для высокооплачиваемых галерных рабов. Видать не так просто пробиться на жабские галеры, приходится толкаться возле скриптопараши. Чтобы было не так больно плебеям выдали typescript (вместо вазелина).

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

Что за язык такой чудесный, где структуру назвали интерфейсом? Это тот самый ваш вазелин? Ну вот тебе структура в пистоне:

@dataclass
class ProcessInfo:
  user: str
  dbus: str
  display: str

Если кодеры этим не пользуются, то это проблема кодеров. В твоем вазелине тоже можно небось наговнять все на туплах и хэшмапах. Только жабка спасёт вашего брата.

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

: str

Халлелуя. Гвидыч под старость лет таки признал ущербность динамики. Ну, может лет через 5 все начнут писать на 3.7, тогда и поговорим

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

Он еще и гордится этим! Пол мегабайта скриптухи и блокнот. Остановите землю, я сойду.

Йуный подаван, подрастешь и может быть поймешь это преимущество. Понятность и очевидная предсказуемость кода - это тебе не «байтики перекладывать» в визуалстудии. Хотя и с этим тоже все норм в питоне. И то, что проект устойчив и не сегфолтится на манер крестово-цэшных собратьев, это лишнее подтверждение тому. Btw на одних и тех же сложных документах, потребление памяти у sk1 в разы меньше, чем у крестового Инкскейпа (да, это опенсурс, но и sk1 тоже опенсурс) и примерно такое же как у крестового CorelDraw, который девелопит нехилая корпорация. А по скорости рендеринга sk1 порой обгоняет Инкскейп (видно невооруженным глазом). Как так? Чо так божественные кресты лагают? ;)

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

Сударь, вы несете какую-то чепуху

Как минимум оно в root_notify_env и send_notification. Дальше проследить нет сил, т.к. там всё на индексах и, кажется, одна и таже сущность переобувается несколько раз

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

Понятность и очевидная предсказуемость кода

Python

Куда скидывать деньги на лечение. У тебя тоже лисп для души?

И то, что проект устойчив и не сегфолтится

заслуга сборщика мусора

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

Тебе виднее. Поверю на слово

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

Как минимум оно в root_notify_env

Оно там как максимум. Результат ф-ции re_pid_environ() больше нигде не используется. root_notify_env() передает уже совсем другое - короткую выжимку из env всех процессов. И на send_notification путешествие эвов обрывается.

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

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

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

Куда скидывать деньги на лечение.

Отложи себе в персональный пенсионный фонд :)

У тебя тоже лисп для души?

неа, у меня тикль для души

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

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

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

В голове у гребца не укладывается как можно поддерживать 100+ строк без ассиста ide и живительных люлей от компилятора

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

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

Так лисп давно уже на пенсии. С 90-х, со времён AI winter.

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

мразь, это ты должна отвечать на вопрос

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

То, что иногда либы с/с++ называют golang

Это как? Разве этот код похож на C++?

flag.Usage = func() {
	fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
	flag.PrintDefaults()
}

(сорь, добавил тупой коммент для проверки новой разметки))))))

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

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

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

Это же фронтенд-макака, у неё там 20 сортов говна на завтрак, обед и ужин. Прикольно, что такие деятели осилив нелепый тупескрипт мнят себя королями помойки. Вангую, что предыдущие n лет товарищ писал на динамическом говнеце и даже не знал как это ужасно пока ему босс не впендюрил тупескрипт.

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

Это же фронтенд-макака, у неё там 20 сортов говна на завтрак, обед и ужин. Прикольно, что такие деятели осилив нелепый тупескрипт мнят себя королями помойки. Вангую, что предыдущие n лет товарищ писал на динамическом говнеце и даже не знал как это ужасно пока ему босс не впендюрил тупескрипт.

Избранные теги: javascript, rust, typescript

И почему в Раст идут только такие бездарные макаки?

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

Раст им нужен для повышения самооценки: мам, смотри, я накрутил типы и компилирую в бинарь!

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

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

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

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

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

Раст им нужен для повышения самооценки: мам, смотри, я накрутил типы и компилирую в бинарь!

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

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

Я тебя умоляю, для всего этого достаточно голанга. Раст на бэкенде не пришей кобыле хвост. Ты наяриваешь раст только потому что это модно, круто и дает значительный прирост ЧСВ.

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

Я любитель крутых навороченных систем типов. Голанг мимо, увы

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

Так им и не надо никуда бежать, потому что они из своей скриптухи и не вылазили. Как ваял спунбоб на жс, так и продолжает это делать. Но теперь он может понтоваться растом и тупескриптом (хотя чего бы не писать на C# тогда). Так же и местный мудрец-полиглот вертухай - яростно топит за раст, но по жизни это унылый эникей с голангом и питоном наперевес.

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

Как ваял спунбоб на жс, так и продолжает это делать

Ох уж эти принципы. Так уж вышло, что веб сегодня это последний оплот свободки . Остальная гуйня приватизирована и попилена между барыгами мира сего. Поэтому жру говно, ничего не могу с собой поделать. Вся надежда на Rust+WASM. Можно сказать, сделал ставку на них. Рискованную..

хотя чего бы не писать на C# тогда

Бесперспективняк за пределами PAAS Windows Desyat Telemetry Edition

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

Так им и не надо никуда бежать, потому что они из своей скриптухи и не вылазили.

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

Наглядная демонстрация эскапизма – все растовоены используют объект своего обожания только сугубо на форуме, ведь в реальном, не хелловорлдном мире никаких Растов просто-напросто не существует. Но ничего, уютный форумный мирок – это именно та реальность, где можно выяснить, какой же язык все-таки является «№1, top 1, the most loved, hype, hype, hype, лайк, зведочка, плюсик» языком – Лисп, Раст или все же Elm с Elixir’ом.

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

Так там все функции такие, чувак. Там один файл на 4000 строк.

Не все. Некоторые используются в нескольких местах, и далеко от объявления.

[пример этой же функции на «более подходящем» языке]

Не хватает реализации и того же комментария. Но теперь по крайней мере ясно, с чем сравниваем. Благодарю.

Я уже промолчу о том, что твоя функция срет в логи, вместо того, чтобы бросать исключения или...

Это прихоть автора, с языком не связанная. Возможно, такое решение ему просто первым пришло в голову.

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

А, это — пожалуйста. 🙂 Ментальное спокойствие, хоть и не объективный, но тоже важный критерий выбора языка.

Конечно, никакая типизация не защитит от всех ошибок. Но продуктивность всё равно выше, если пишешь на языке, на котором тебе спокойнее.

А мне, наоборот, приятнее писать на питоне. На нём, словно, дышать легче. Ты просто пишешь решение. Можно писать самое короткое, самое быстрое или самое красивое... Или первое попавшееся, если надо быстро сделать и забыть.

На типизированных языках постоянно спотыкаешься о компилятор. Например, попробуй на TypeScript поиграть в https://screeps.com/ (это такая MMO для программистов). Переложи на TypeScript апи... Это вполне возможно, и многие в Screeps пишут именно на TS. Но часто ловишь себя на мысли, что ты думаешь не о том, как решить задачу, а о том, как уложить решение в свою систему типов.

и, если чуть почистить код, можно даже докстринг не писать

Стоило догадаться

Ты, наверное, не понимаешь, потому что с типами так почти не бывает. Я покажу на примере. Представь, что код выглядит так:

def re_pid_environ(pid):
    try:
        with open("/proc/%s/environ" % pid) as f:
            env = dict( kv.split('=',1) for kv in f.read().split('\0')[:-1] )
            # exclude Display Manager's user and root
            if env["HOME"].startswith("/var") or env["USER"] == "root":
                return None
            else:
                return env["USER"], env["DISPLAY"], env["DBUS_SESSION_BUS_ADDRESS"]
    except Exception as e:
        log('notify helper: %s' % e)
        return None
Тут не нужен докстринг. Функциональность и возвращаемые значения очевидны из кода.

И вся реализация на питоне вышла короче, чем одно только объявление на typescript-е. Можно ещё на 3 строки короче, но так мне больше нравится.

А следующим шагом можно выкинуть всю функцию, вставив 4 строчки прямо в root_notify_env().

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

PS: вышеприведенный код написан без IDE, прямо в поле ввода LORа. Да, так тоже можно.

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

А мне, наоборот, приятнее писать на питоне

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

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

И это правильные мысли. Параллельно еще следует думать, как написать этот кусок легкотестируемым. У TS достаточно развитая система типов для описания даже самых извращенных js-кренделей. И если ты упирался в систему типов, то, возможно, ты ее недостаотчно хорошо знаешь. Либо пытаешься выразить что-то совсем уж неадекватное

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

Тут не нужен докстринг. Функциональность и возвращаемые значения очевидны из кода

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

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

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

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

Ох уж эти принципы. Так уж вышло, что веб сегодня это последний оплот свободки .

Так ты решил приложить руку к закапыванию этого оплота бинарщиной? Молодец, чо. Все здравомыслящие люди опасаются, что wasm и бинари с корпоративными закладками угробят остатки свободы, а этот борцун сидит ждёт потирая ладошки. Sun копала-копала могилку интернету, но надорвалась и сдохла. Микросакс копал-копал, но тоже притомился и не преуспел. Зато адепты раста бесплатно готовы выйти с лопатами ради… секса с компилятором. Это просто лол как вас «поимела пропаганда».

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

mv и золотце похапешники, так и запишем

кстати, надо тебя с золотцем столкнуть

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