LINUX.ORG.RU

Создатель Python разочарован в Scala

 , ,


2

0

Гвидо ван Россум, создатель Python, в своем блоге делится впечатлениями от изучения языка Scala: "К сожалению, я полностью разочарован в этом языке". Причиной является слишком сложная система типов Scala: "Если такая система необходима для корректной обработки разных типов данных во время компиляции, я однозначно предпочту динамическую типизацию".

>>> пост

anonymous

Проверено: maxcom ()

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

>Она тебе сильно изменяет. Или думаешь для других языков делают биндинги к питону?

Нет это на вам изменяет. Не только память, но и профессиональный кругозор. AppEngine - это полностью Python. Это известно всем с первого дня его появления. Там в основе Django. Тот Issue Tracker что вы показывали - просьба сделать аналогичный сервис (веб-фреймворк + доступ к технологиям google) для других языков. И он будет. Как минимум, для Perl. Естественно, на другом фреймворке.

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

>>Вы думаете, что питон не проверяет синтаксис? o_O
при сборке pyo/c он коечто проверяет.

но как к примеру подобная хрень

def myclass1()
self.somevar = 1

и от этой переменной зависит состояние в которое переключится объект. и вот где то в коде написяно
...
somevar = 2
...
но долгожданного поведения не проследовало... ах да надо же self написать, иначе эта срань просто создаст новую переменную - чертовски удобно. учитывая что сборка аналогичного проекта на си-подобном компилируемом языке заняла бы секунд 5-15, то в питоне этой ошибки надо ждать намного дольше ибо это реакция на событие из вне и видна только в логе

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

>>Мастер! Уже имеешь право глаголить истину в последней инстанции.
>>Букварь-то основной по языку уже прочитал?
ммм, причом тут последняя инстанция? толстовато както пытаешся привести меня к внутреннему противоречию. букварь? хм, в некоторых местах он такойже гавенный как и язык. по-поводу того что(щас тут многие попытаяца так сказать) я мол не вложив ничего в питон его обсираю - отвечу - мне задали вопрос, а я ответил; назовем так наш состоявшийся диалог

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

>Есть ли среди вас те, кто вернулся?

Да брось! Статическая система типов Scala обладает очень многими плюшками динамической.

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

Собственно говоря, и твой, и мой примеры к типу типизации (тип типизации, как звучит то! :) никак не относятся.

mv ★★★★★
()

а почему никто не вспомнил про ассемблер ?

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

>В рассылке скалы по этому поводу дискуссия одной из основных мыслей которого такая что Гвидо написал этот пост на основании того что пролистал книгу - надо бы ее все же ему попробовать прочитать.

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

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

> И где здесь _синтаксическая_ ошибка?

Он просто не любит Питон и не умеет на нём писать. У Питона динамическая типизация => все ЯП с оной - фигня несусветная :)

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

>Ровно то же самое можно сказать про Питон :)

Я не читал предыдущую часть треда :) Поэтому проецировал на более распространённые языки, на которых пишут доставшие уже сегфолтами kopete да pidgin'ы :)

Да, в Питоне с этим лучше. Но он и не стимулирует расстановку обработчиков исключений генерацией ошибки исполнения при их отсутствии :)

А в Java то же открытие файла без обработки исключения ты просто не напишешь...

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

>Меньше - наверняка. "В разы" - а кто и как считал?

Оценка субъективная, но я с ней согласен :) Мне сейчас в PHP настолько не хватает строгой типизации, что я её иногда эмулирую :) Скажем, если в объект пишется значение иного типа, чем бывшее там до того, кидаю в лог hidden warning :)

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

Толще некуда.

/home/legolegs/programing/sandbox/src/sandbox.cpp:48: warning: 'mc' is used uninitialized in this function

/home/legolegs/programing/sandbox/src/sandbox.cpp:47: note: 'mc' was declared here

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

>Как будто Ява в рантайме не падает %)

Это ещё что! У меня, иногда, она вообще не запускается, причем функционала у проги с Гулькин х..м ... нос.

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

> в Питоне с этим лучше. Но он и не стимулирует расстановку обработчиков исключений генерацией ошибки исполнения при их отсутствии :)

Ну и как он должен это стимулировать? Попытка такой стимуляции в Яве (checked exceptions) признана неудачной.

> А в Java то же открытие файла без обработки исключения ты просто не напишешь...

Я, может, и напишу :) Ну а кто-то другой просто напишет пустой catch

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

> Мне сейчас в PHP настолько не хватает строгой типизации, что я её иногда эмулирую :) Скажем, если в объект пишется значение иного типа, чем бывшее там до того

Ты путаешь строгую типизацию со статической.

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

Да-да, можно ещё -Wall добавить, чтобы программист уж точно не
пропустил... :-D У нас компилятор тоже ворнингами сыпит:

;;;; (defun a (b) t) ...
; in: LAMBDA NIL
;     (SB-INT:NAMED-LAMBDA A (B) (BLOCK A T))
; ==>
;   #'(SB-INT:NAMED-LAMBDA A (B) (BLOCK A T))
; 
; caught STYLE-WARNING:
;   The variable B is defined but never used.
; 
; compilation unit finished
;   caught 1 STYLE-WARNING condition

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

>> Если безопасность типов времени компиляции требует такого

> В по-русски?

А по-русски и Вы не угадаете правильный вариант: "Если для корректной обработки типов во время компиляции...". Safety -- это не "безопасность", а "отсутствие порчи". Ошибка крайне распространённая и характеризующая плохое знание русского языка специалистами по ИТ и плохое знание ИТ переводчиками.

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

>Попытка такой стимуляции в Яве (checked exceptions) признана неудачной.

Кем признана? Лично я считаю её очень удачной :)

>Я, может, и напишу :) Ну а кто-то другой просто напишет пустой catch

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

Если же стимуляции такой нет - то просто ничего не напишешь. Поломает :D

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

>Ты путаешь строгую типизацию со статической.

Мне не хватает статической типизации и поэтому приходится эмулировать не строгую, но, э..., «предупрежденческую» динамическую. Так сойдёт формулировка? :)

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

> Google уже думает, на что переводить Gaps с Питона.

откуда дровишки ?

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

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

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

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

>>Попытка такой стимуляции в Яве (checked exceptions) признана неудачной.

>Кем признана? Лично я считаю её очень удачной :)

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

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

> Чем ее меньше, тем проще писать. Шаблоны в С++ тоже неплохое решение таксономии.

Никогда не видели библиотеки шаблонов C++ для имитации функциональности Фортрана при тестировании фортрановской математический библиотеки? :)

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

Продактивити, понимашь ли...

Чтобы быстро навалить большую кучу, надо есть много гороха и чёрного хлеба... :)

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

Это называется -Wall, как ту уже верно заметили. Ахренительно работает для строгих языков. Да даже пыхпых проще отлаживать, если конечно там до тебя не 10000 строк написано ротой обезян с error_reporting(0);

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

>>Попытка такой стимуляции в Яве (checked exceptions) признана неудачной.

>Кем признана? Лично я считаю её очень удачной :)

ОК, вычеркну тебя из списка признавших %)

Поиск по-быстрому дает это: http://radio.weblogs.com/0122027/stories/2003/04/01/JavasCheckedExceptionsWer... AFAIK, общепризнанная позиция.

> Если же стимуляции такой нет - то просто ничего не напишешь. Поломает :D

Поломать можно даже checked exceptions Явы, но это ничего не доказывает. Но я лично не знаю "как надо". Может, навороченные системы типов помогут...

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

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

>Ну, тогда решай свои задачи горами тестов и часами отладки.


Хуита(ц). В нижележащем коде есть ошибка - использован std::for_each вместо std::transform.
Однако он компилируется и выдает неверный результат.

#include <iostream>
#include <functional>
#include <algorithm>
#include <boost/lambda/lambda.hpp>

using namespace boost::lambda;

int main (){
int arr[10];
std::for_each(arr, arr+10, &_1 - &arr[0]);
std::for_each(arr, arr+10, std::cout<<_1<<'\n');
return 0;
}

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

>>Поиск по-быстрому дает это

>А, ну да, 1 апреля :)

А публиковать серьезные статьи на 1 апреля запрещено? :) Поищи по Java checked exceptions, там много похожих статей.

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

> Guido нельзя воспринимать серьезно, ясно же реднек не осиливший даже среднее школьное образование.

I received a Master's degree in Mathematics and Computer Science from the University of Amsterdam in 1982, and joined CWI as a researcher in the same year. While studying, I worked for 5 years as a systems programmer at Amsterdam's academic computer center, SARA.

http://www.python.org/~guido/Resume.html

А теперь поведай, о яйцеголовый анонимус, о своём образовании. Вместе посмеёмся.

С уважением, Guido.

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

>>Попытка такой стимуляции в Яве (checked exceptions) признана неудачной.

>Кем признана? Лично я считаю её очень удачной :)

>Поиск по-быстрому дает это: http://radio.weblogs.com/0122027/stories/2003/04/01/JavasCheckedExceptionsWer... AFAIK, общепризнанная позиция.

Смотря для чего. Для того что обычно на яве пишется - нормально. Граф вызовов разворачивается до корня и сервер выдает 500 Internal Server Error в том случае если это сервлет или пробрасывает RemoteException клиенту через RMI если это аппликейшен сервер.

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

>worked for 5 years as a systems programmer

ого. системное программирование с динамической типизацией? вывод ясен: Гвидо - дятел.

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

> ого. системное программирование с динамической типизацией? вывод ясен: Гвидо - дятел

Не позорь звание анонимуса, идиот. Гвидо и Питон написал на Питоне? Или у него специальный динамически типизируемый C для этого?

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

> а заказщики в итоге не знают, что хотят - попу или голову.

Это, кстати, одно из преимуществ динамической типизации - быстро удовлетворять клиента.:))

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

> В нижележащем коде есть ошибка - использован std::for_each вместо std::transform. > Однако он компилируется и выдает неверный результат.

Про такое убожество в плане типизации как С++, простите, речи нет.

pierre
()

Ассемблер - наше фсьо! Капча latled как-бы намекает на присутствие быдлокодеров в треде.

anonymous
()

Динамическая типизация - костыль, которым подпирают языки, которые притендуют на "general-purpose". Просто нехватает доменно-спецефичности.

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

> Safety -- это не "безопасность", а "отсутствие порчи".

Fixed

> Ошибка крайне распространённая и характеризующая плохое знание русского языка специалистами по ИТ и плохое знание ИТ переводчиками.

А это я уже вылечить не могу :)

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

>В нижележащем коде есть ошибка

Для начала, в этом коде arr неинициализирован. Хотя, конечно, плохо, что компилятор об этом не сообщает.

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

> using namespace boost::lambda;

Я, к сожалению, не знаком с этой бредятиной как следует, но, если не ошибаюсь, в хаскеле аналогом for_each будет mapM_, а transform -- map?

Так вот, у этих ф-ций типы параметров весьма разные, в жизни не перепутаешь.

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

>>В нижележащем коде есть ошибка

>Для начала, в этом коде arr неинициализирован.

А он и не должен быть инициализирован. Его transform должен заполнить.

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

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

Давайте.

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

> Динамическая типизация - костыль, которым подпирают языки, которые притендуют на "general-purpose". Просто нехватает доменно-спецефичности.

А может быть не "костыль", а способ избежать необходимости плодить доменный язык на каждый чих?

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

> Ну, тогда решай свои задачи горами тестов и часами отладки.

Вы считаете С++ или пусть даже Java в тестах хотя бы с полным покрытием кода не нуждаются?

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

Я разобрался в этом примере. Такая ошибка не может случиться из-за опечатки. Во всяком случае, это маловероятно, т.к. у transform на один аргумент больше, чем у for_each. С другой стороны, для форича логичнее написать "_1 = &_1 - &arr[0]".

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

>А может быть не "костыль", а способ избежать возможности исправить кучу глупых ошибок после первой же компиляции?

Исправлено.

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

> Уважаемые, кто-нибудь из вас пробовал самолично. Проработав на языке со статической типизацией годы, уйти волею случая (жизнь заставила), и поработать на языке с динамической типизацией пару лет?

Да. Проклинал прожитую зря молодость. Задача правда, была соответствующей.

> А вернувшись не бился бы в этой войне с плюсофагами?

Бьюсь.

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

> А может быть не "костыль", а способ избежать возможности исправить кучу глупых ошибок после первой же компиляции?

> Исправлено.

У вас доменные языки сплошь со строгой типизацией или вы просто не поняли, о чём шла речь?

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

Нет. Именно костыль :) Можете реально привести примеры, где нужна Д.Т. а не ДСЛ? Не экономия печати пары символов, а реальный профит? Просто не писать типы где "можно и догадаться" умеет и скала.

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