LINUX.ORG.RU

Джошуа Блох о замыканиях


0

0

Известный программист и архитектор программных систем Джошуа Блох дает интервью, в котором рассказывает, чем он занимается в Google, что он думает о предложении ввести в язык Java поддержку замыканий, о необходимости поддержки многопроцессорного исполнения кода функциональными языками, о введении LINQ в язык C# и еще много о чем...

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

anonymous

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

>>Ну в C шаблонов вообще нет никаких. С - кривой язык?

>Нет. С - до сих пор один из лучших, а если в голове есть мозги понимающие для _каких_ задач он подходит - то и лучший!

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

>>Тем не менее 2 my mind языку C больше недостает опциональной уборки мусора чем шаблонов.

>Либо ты кретин (ничего личного) - либо ты о С++ - о __другом__ языке! Но тогда ты кретин вдвойне ,)

С++ мы вообще не рассматриваем. В С++ реально используются только фреймворки типа Qt или оффтопичных MFC/ATL, которым возможностей языка С++ недостает, несмотря на их изобилие. Это решается с помощью расширений языка (msvc++) или с помошью препроцессоров (Qt moc). Пытаться использовать навороченный стандартный С++ в реальном проекте - это верный путь к тому чтобы загубить проект.

>> ... float вообще для бизнес-кода не годится, только для графики. >Утверждение и диагноз - смотри как получилось ,)

Твой оклад - 777.77777777(7) долларов

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

>> Вечно забываю, что Ява - это Кобол нашего времени :D

> А что плохого - это бабки.

Ну там кто-то заявлял выше по треду, что Ява - это типа универсальный язык программирования :)

> В С++ реально используются только фреймворки типа Qt или оффтопичных MFC/ATL, которым возможностей языка С++ недостает, несмотря на их изобилие. Это решается с помощью расширений языка (msvc++) или с помошью препроцессоров (Qt moc).

Ну вот не надо всё валить в одну кучу - moc появился потому, что не все компиляторы, которые Trolltech хотела поддерживать, реализовывали шаблоны. И _всё_.

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

>> В С++ реально используются только фреймворки типа Qt или оффтопичных MFC/ATL, которым возможностей языка С++ недостает, несмотря на их изобилие. Это решается с помощью расширений языка (msvc++) или с помошью препроцессоров (Qt moc).

>Ну вот не надо всё валить в одну кучу - moc появился потому, что не все компиляторы, которые Trolltech хотела поддерживать, реализовывали шаблоны. И _всё_.

Может Строуструпу надо было инициально озадачиться поддержкой сигнал/слот на уровне языка? Это важнее шаблонов и перегрузок операторов. Или может лучше бы С++ вообще бы не было, а был бы Objective C ?

>>> Вечно забываю, что Ява - это Кобол нашего времени :D

>> А что плохого - это бабки.

>Ну там кто-то заявлял выше по треду, что Ява - это типа универсальный язык программирования :)

А что, в движках типа quake или в кодеках реально где-то используется std::vector<float> ? Там по моему вполне обходятся массивами фиксированного размера чтобы память не фрагментировать попусту. Ну на крайняк realloc. В RTSJ тоже применяется immortal/scoped память и массивы фиксированного размера.

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

> Может Строуструпу надо было инициально озадачиться поддержкой сигнал/слот на уровне языка?

Зачем? Наскольо я понимаю (правда, с Qt не работал), слоты/сигналы вполне моделируются шаблонами.

> Это важнее шаблонов и перегрузок операторов.

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

> Или может лучше бы С++ вообще бы не было, а был бы Objective C ?

Мне лично Objective C всегда казался уродцем. Лучше всего - если бы Страуструп был поразборчивее при добавлении фич в язык.

> А что, в движках типа quake или в кодеках реально где-то используется std::vector<float> ?

ХЗ, не писал. Слышал только, что в играх STL используется довольно широко.

> Там по моему вполне обходятся массивами фиксированного размера чтобы память не фрагментировать попусту

Теоретически, можно и так. Но я сомневаюсь, что так делает кто-нибудь, кроме Даркмана :)

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

>> Может Строуструпу надо было инициально озадачиться поддержкой сигнал/слот на уровне языка?

>Зачем? Наскольо я понимаю (правда, с Qt не работал), слоты/сигналы вполне моделируются шаблонами.

Шаблоны + макросы. Например, в WTL это происходит так:

class CMyWindow : public CWindowImpl<CMyWindow, CWindow, CFrameWinTraits>
{
public:
    DECLARE_WND_CLASS(_T("My Window Class"))
 
    BEGIN_MSG_MAP(CMyWindow)
        MESSAGE_HANDLER(WM_CLOSE, OnClose)
        MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
    END_MSG_MAP()
 
    LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        DestroyWindow();
        return 0;
    }
 
    LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        PostQuitMessage(0);
        return 0;
    }
};

Лично мне Qt подход кажется менее уродливым.

>> А что, в движках типа quake или в кодеках реально где-то используется std::vector<float> ?

>ХЗ, не писал. Слышал только, что в играх STL используется довольно широко. 

Играм больше недостает отсутствие номальных указателей на метод
объекта. Хренота типа boost::function работает отвратительно - там 
сначала вызывается operator(), потом вызывается виртуальный метод
объекта-переходника, потом вызывается целевой метод через указатель
на метод. Насколько я понял, в Doom III опять-таки используется
препроцессор чтобы обойти ограничения С++ на вызов методов объектов
через указатель.

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

Вообще нет ничего кроме нулей и единиц. Понапридумывали... Шаблоны, указатели, методы. Да пребудут с вами три великих стека, друзья мои. Во имя Ассемблера, брата его Ассемблера и сестры его Ассемблера. Братья и сёстры во Ассемблере спасут мир.

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

>>> А что, в движках типа quake или в кодеках реально где-то используется std::vector<float> ?

>>ХЗ, не писал. Слышал только, что в играх STL используется довольно широко.

>Играм больше недостает отсутствие номальных указателей на метод объекта.

вот любопытный обзор "The Next Mainstream Programming Language: A Game Developer’s Perspective"

http://morpheus.cs.ucdavis.edu/papers/sweeny.pdf

Вкратце, описываются потроха Gears of War на движке Unreal3.

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

Там, где рулит С++, девелоперам не понравился динамический характер эксепшнов, и они воткнули систему типов Хаскелля в свой язык, что-то на основе C++. Получили статически, заранее проверяемую семантику вызовов функций, улучшили отладку.

Ну и про симуляцию и вычисления -- неожиданно хорошо подошла STM (software transactional memory) и функциональщина из Хаскелля. C++ лучше для вычислений, Хаскель - для симуляции.

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

> Зачем? Насколько я понимаю (правда, с Qt не работал), слоты/сигналы вполне моделируются шаблонами.

угу, как и аспекты. Но как же криво они при этом моделируются, проще язык расширить =)

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

Absurd - извиняюсь за излишне резкий тон - не так понял поначалу.

По делу - С я не считаю подходяцим для бизнесс-логики к примеру. Он хорош для создания редко изменяющихся вещей. Типа AS, RTL, сервисов для чего то высокоуровневого собственно реализуещего бизнесс-логику. А вот оно должно быть на реально высокоуровневом языке, ибо нынешняя мода - это теория о fast turnovers бизнес софта.

>>> ... float вообще для бизнес-кода не годится, только для графики. >>Утверждение и диагноз - смотри как получилось ,)
>Твой оклад - 777.77777777(7) долларов

Спокойно! денежные суммы мы в копейках тоже храним (явно ушли float->int), но ваше утверждение все еще ложно! :)
Для примеру изобрази ко мне interest rate %4.5625 per year??? Причем прайм - %2.15

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

>Для примеру изобрази ко мне interest rate %4.5625 per year??? Причем прайм - %2.15

Ни то ни другое не является степенями двойки, следовательно во float-ах не выражается. Хотя ... Массивно BigDecimal мне использовать не приходилось, так что судить не берусь.

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