LINUX.ORG.RU

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

 


2

3

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

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

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

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

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

anonymous

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

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

условимся на том, что конфиг всегда валидный

Условимся, что все переменные определены, и еще много в чем условимся. Мы же в спецолимпиаде на скорость участвуем, нафиг нам что-то проверять

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

И «сколько там будешь копипастить», чтобы ловить KeyError?

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

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

Условимся, что все переменные определены, и еще много в чем условимся. Мы же в спецолимпиаде на скорость участвуем, нафиг нам что-то проверять

Ну можешь проверять на плюсах или на чём ты там пишешь, а я посмотрю и посмеюсь. Это сперва сделай.

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

Ну вот и будешь копипатсить switch или генерировать каждый раз для каждого класса.

Ты не понимаешь, как работают плюсы. Я не буду писать switch или генерировать что-то, я посмотрю в данные и найду соответствующее значение для переданного value.

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

Ты не понимаешь, как работают плюсы. Я не буду писать switch или генерировать что-то, я посмотрю в данные и найду соответствующее значение для переданного value.

Как это будет выглядеть? Код.

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

Туда не должен входить левый ключ, который вызовет KeyError

Аа. Ну раз не должен

нет смысла про это говорить

Это да

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

Аа. Ну раз не должен

Ключи проверяются до того, как их куда-то сунуть, очевидно. Нет смысла делать это прямо во время доступа.

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

Критика импортов в любом ЯП – детектор неадекватов

да ладно. вот в Аде импорты правильно сделаны: [code] procedure puts( amount_written: out integer; s :string ); pragma import( C, puts, «puts» ); pragma import_valued_procedure( puts, «puts»); [/code]

можно и как функцию импортировать, тогда вторая прагма не нужна.

в GNAT [url=http://docs.adacore.com/live/wave/gnat_ugn/html/gnat_ugn/gnat_ugn/the_gnat_compilation_model.html#building-mixed-ada-and-c-programs]говорят[/url], что и С++ можно импортировать (но у него кривой АBI, так что там далее секас с objdump-ом из-за манглинга и какие-то ограничения).

вообще, в Ada как раз пример вменяемо реализованного FFI/импортов/си биндингов, судя по [url=http://docs.adacore.com/live/wave/gnat_ugn/html/gnat_ugn/gnat_ugn/platform_specific_information.html#]этому[/url], [url=http://docs.adacore.com/live/wave/gnat_ugn/html/gnat_ugn/gnat_ugn/the_gnat_compilation_model.html#mixed-language-programming]этому[/url] и т.п.

почти во всех других языках иморты сделаны неправильно :))

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

вот же блин, лоркод

Критика импортов в любом ЯП – детектор неадекватов

да ладно. вот в Аде импорты правильно сделаны:

 procedure puts( amount_written: out integer; s :string );
 pragma   import( C, puts, "puts" );
 pragma   import_valued_procedure( puts, "puts");

можно и как функцию импортировать, тогда вторая прагма не нужна.

в GNAT говорят, что и С++ можно импортировать (но у него кривой АBI, так что там далее секас с objdump-ом из-за манглинга и какие-то ограничения).

вообще, в Ada как раз пример вменяемо реализованного FFI/импортов/си биндингов, судя по этому, этому и т.п.

почти во всех других языках иморты сделаны неправильно :))

anonymous
()
Ответ на: комментарий от crutch_master
template<typename T>
T acc () {
  T result = T();
  std::accumulate(values.begin(), values.end(), result);
  return result;
}

template<typename T>
auto funcs = std::map {
  {"sum", [](const std::vector<T> &values) { return acc(values); } },
  {"avg", [](const std::vector<T> &values) { return acc(values) / values.size(); } },
  {"min", [](const std::vector<T> &values) { return *std::min_element(values.begin(), values.end()); } },
  {"max", [](const std::vector<T> &values) { return *std::max_element(values.begin(), values.end()); } },
};

int main() {
  const auto cfg = json.parse("...");
  for (const auto &kv : cfg["results"]) {
    std::vector<std::string> str_values;
    std::vector<int> int_values;
    boost::split(kv.value, values, ',');
    std::transform(str_values.begin(), str_values.end(), std::back_inserter(int_values),
                   [](const std::string &key) { return std::stoi(return cfg[key]) });
    std::cout << kv.key << " = " << funcs<int>[kv.key](int_values) << std::endl;
  }
  return 42;
}


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

Нет смысла делать это прямо во время доступа

Ну добавь вопросик в конец: dict.get(‘value’)?;

Deleted
()
Ответ на: вот же блин, лоркод от anonymous

секас с objdump-ом для вызова С++ из Ады

здесь

вообще, книжка

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

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

Да, по сути он одинаков, но на жс всё это несколько короче.

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

почти во всех других языках иморты сделаны неправильно :))

Лень разбираться почему ты не прав)

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

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

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

ЯННП, какая ошибка, если у тебя «ключи проверяются до того, как их куда-то сунуть, очевидно»

Deleted
()
Ответ на: комментарий от Deleted
var check = (cfg)=>{
   //Чекаем ключи
   if (!cfg.data) return {error : "No cfg.data"};
   if (!Array.isArray(cfg.data) return {error :"cfg.data is not array"}; //or throw
}

var work = (cfg)=>{
   //Не запустится, если ключи никто не чекал
   let data = cfg.data;
   data.forEach(...);
}

var res = check(cfg);
if (res.error) {
   work(cfg)
} else {
   log(res.error);
}
crutch_master ★★★★★
()
Ответ на: комментарий от anonymous

И прямо таки готовых программистов компилят, кто С++, кто С, кто питонистов)))

в терминах программирования именно так дело и обстоит - именно женщины из исходников собирают исполняемое приложение. Тебя это удивляет ?

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

В след за гуглом мозилла решила, что осилит Rust

разве до этого у них не было своего XPCOM ? rust это развитие идеи своего инструмента разработки.

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

это не чудо-юдэ на рекламных стероидах типа раста

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

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

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

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

зато корпорасты могут поднасрать со стороны своего единственного и неповторимого браузерного движка

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

И этого вполне достаточно, что бы оправдать существование этого языка.

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

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

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

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

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

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

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

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

И давай не сочиняй про мифическую сложность своих гигантских микросервисов, что аж понадобилась система типов ML.

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

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

Писал на всей скриптопомойке :) История каждый раз повторялась: код в 2-3 экрана уже заставляет метаться туда-сюда, что-то перечитывать, запоминать. А уж когда отдельные файлы появляются.. Не знаю, наверное это я просто такой тупой, а остальным норм)

Запуск кода почти всегда означал провал. Всегда что-то валилось в рантайме и приходилось раз 5-10 запускать-править, прежде чем оно заработает. Это изматывает и порождает стресс. На статике, да с IDE, всякий запуск это почти 100% работающий код, в котором уверен.

Для того веба скриптоязычки были то, что доктор прописал

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

А сейчас грех жаловаться. Типизированные языки есть для всех слоев: скриптодетей, системнохипстеров, матанобогов. Золотой век типизации, епт. Грех не воспользоваться плодами цивилизации. Эт тебе не переполнения на борланд C++ отлавливать

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

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

В файрфоксе очень мало раста.

И из-за раста файрфокс скатывается в говно последние годы: они хотят переписать его на расте, но не могут осилить столько кода — не хватает опытных человекочасов.

Да и rust всё время мешает. Написание сложного кода — это постоянная борьба с компилятором. Если «опытный программист» — это тот, кто даже в блокноте с первой попытки может написать компилирующийся и работающий без ошибок код, то опытных программистов на расте, похоже, не существует.

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

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

вся деятельность которых заключается в ковырянии статического оверхедного кода

Оверхеда кот наплакал. Определения структур данных, и аннотации функций маст хэв в любом случае. А (почти) во всем остальнном коде компилер выводит типы автоматически. Это тебе не auto auto через auto.

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

Запуск кода почти всегда означал провал. Всегда что-то валилось в рантайме и приходилось раз 5-10 запускать-править, прежде чем оно заработает. Это изматывает и порождает стресс.

Эти обезьяны оправдывают это TTD. Я ебал писать тесты для покрытия отсутствующей типизации!

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

TDD (сорян, пишу с горящего телефона)

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

Причем тесты это тоже код и тоже не с первого раза пишется правильно!)

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

Писал на всей скриптопомойке :) История каждый раз повторялась: код в 2-3 экрана уже заставляет метаться туда-сюда, что-то перечитывать, запоминать. А уж когда отдельные файлы появляются.. Не знаю, наверное это я просто такой тупой, а остальным норм)

Как-то сразу возникают подозрения. что с архитектурой кода мсье хронически не ладит. Неужели так сложно разделить код на логические модули и не прыгать жабкой туда-сюда? Да и IDE всегда избавляет от такого.

Запуск кода почти всегда означал провал. Всегда что-то валилось в рантайме и приходилось раз 5-10 запускать-править, прежде чем оно заработает.

Диагноз понятен - непонимание сабжа, незнание синтаксиса, игнорирование варнингов IDE (или не использование нормальных IDE). Типизация в таком случае не панацея а костыли для неспешного продвижения по скраму.

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

Написание сложного кода — это постоянная борьба с компилятором

А в случае со скриптопомойкой – борьба с интерпретатором (иногда в блокноте, на продакшн-сервере). И здравым смыслом

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

Мсьё внезапно заговорили про священную IDE

Неужели так сложно разделить код на логические модули и не прыгать жабкой туда-сюда?

Sounds good, doesn’t work. В скриптоговне не работает

Диагноз понятен - непонимание сабжа, незнание синтаксиса

У тебя все с первого раза? Красавчик

игнорирование варнингов IDE

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

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

Оверхеда кот наплакал. Определения структур данных, и аннотации функций маст хэв в любом случае.

Таки логическое продолжение диагноза - на практике аннотацию вполне можно заменять осмысленными названиями переменных/параметров функций/методов. Избыточность кода - не залог качества. Ели параметр назван url то только дебил в него будет запихивать int. А аннотация string url дебила не остановит. Компейлятор остановит, не вопрос. Но спрашивается, нахрена работать с дебилами?

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

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

обычно в этом месте вспоминают про мух и котлет

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

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

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

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

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

Вот для этого и используются типы — они защищают от дурака, заставляя его учиться и думать. Конечно, они не защищают от всего, но хотя бы часть дурацких ошибок они фильтруют.

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

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

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

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

Мсьё внезапно заговорили про священную IDE

а чо, РПЦ запретило использовать IDE для скриптов? )))

Неужели так сложно разделить код на логические модули и не прыгать жабкой туда-сюда?

Sounds good, doesn’t work. В скриптоговне не работает

Таки да, есть такая категория кодеров, которые аля царя Мидаса - к чему не прикасаются, все превращают в говно. Это диагноз и не лечится.

Ой вот не надо этого. Что священный пучарм изучит твой код и всё будет так-же как в статике. Плавали, знаем. И на 10% не так глубоко и основательно, как при хорошей системе типов

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

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

У нормального программера такие фейлы с типизированными костылями вызывают только ржач

Поржал? Бегом возвращать кортежи с загадочным содержимым. Великий архитектор, блин

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

Таки да, есть такая категория кодеров, которые аля царя Мидаса - к чему не прикасаются, все превращают в говно

Их предводитель на днях вышел на пенсию

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

Бесполезно. Это не лечится)

Оть! Анон верно заметил - все делается для того, чтобы можно было эксплуатировать code monkey на галерных веслах. И code monkey действительно не подлечишь. Только типизирование, ежедневные митинги, контроль кода и прочие инструменты погонщиков. Но вам стоит задуматься (если есть чем). Зарабатывать в IT можно и без веслания и не эти жалкие гроши, которые называют зряплатой. И именно в таком ключе не нужны энтерпрайзные бубенцы. Точнее они сильно мешают и нагружают лишней бессмысленной работой. Правда, как показывает жизненный опыт, 96% галерных гребцов всегда выбирают гарантированную миску похлебки и родную лавку с веслом - они по рождению несамостоятельны.

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

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

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

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

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

argin ★★★★★
()
Последнее исправление: argin (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.