LINUX.ORG.RU

Джеймс Гослинг теперь работает в Google

 ,


0

2

Сегодня выяснилось, что Джеймс Гослинг (автор языка Java) начал свою работу в компании Google.

«Сегодня я приступил к работе в Google. Самое сложное в жизни - это делать выбор. У меня был тяжелый период, когда я должен был говорить „нет“ предстающим передо мной возможностям. Необычно, но в этот раз я вступаю на уже пройденный путь, хотя, судя по-всему, это будет весело и нетривиально.»

Поздравим Джеймса и пожелаем ему дальнейших успехов!

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

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

> Не сдохла бы. Без замыканий и ADT с паттерн матчингом не сдыхает же, к сожалению.

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

так что это ничего нового не несет в процесс верификации (хотя текст и понятность может повысить)

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

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

> так что это ничего нового не несет в процесс верификации (хотя текст и понятность может повысить)

Мде. Ты это серьезно?

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

> Мде. Ты это серьезно?

да

а по-твоему, я где-то ошибаюсь? укажи где

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

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

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

> а по-твоему, я где-то ошибаюсь? укажи где

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

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

> замыкание эквивалентно созданию нового класса, а паттерн матчинг эквивалентен виртуальной функции

так что это ничего нового не несет в процесс верификации (хотя текст и понятность может повысить)

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

Наличие ADT с паттерн матчингом мне гарантирует, что я при деконструкции получу то, что передавал в конструктор. А вот в виртуальном методе можно написать что угодно.

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

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

имеют и прямое

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

1. некоторые языки в компайл-тайме поймают ошибки прогера, которые не поймает си

2. некоторые языки позволят не менять текст библиотек в процессе эволюции программы, тогда как другие — не позволят

и это объективные критерии качества языка, которые *разделяют* языки

по этим критериям язык с АлгТД и паттерн-матчинг недалеко от явы с дженериками

#define тоже облегчает жизнь, и что? можно написать препроцессор, знающий синтаксис, с дефайнами на стероидах, но это новый язык не создаст

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

> Наличие ADT с паттерн матчингом мне гарантирует, что я при деконструкции получу то, что передавал в конструктор. А вот в виртуальном методе можно написать что угодно.

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

это конечно boilerplate, которым славится ява (да, повторение семь раз — не копипаст), но с точки зрения верификации это одно и то же

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

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

я как раз объясняю это тем, что это слишком мелко

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

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

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

> замыкание эквивалентно созданию нового класса, а паттерн матчинг эквивалентен виртуальной функции

ты хотел сказать мультиметодам? так в жабе их нет.

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

> повторение семь раз — не копипаст

Ну раз пошла такая пьянка, то зачем тебе дженерики? Насоздавай себе IntList, StringList и т.д. Всё будет тайпчекаться в компайл-тайме и без параметрического полиморфизма.

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

>> замыкание эквивалентно созданию нового класса, а паттерн матчинг эквивалентен виртуальной функции

ты хотел сказать мультиметодам? так в жабе их нет.

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

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