Редактирование: Bruce Eckel, The State of The Java Union

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

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

Текущая версия Ваш текст
Строка 1: Строка 1:
-
<div style="float:right">[[Изображение:BruceEckel.jpg]]</div>
+
== From Ebaums Inc to MurkLoar. ==
-
== Open-Space style events ==
+
We at EbaumsWorld consider you as disgrace of human race.
-
 
+
Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated.
-
Новый способ проведения научных встреч и конференций, получающий распространение в Java сообществе. Основная идея&nbsp;&mdash; отсутствие деления &laquo;лектор-аудитория&raquo;, когда один о чем-то рассказывает многим достаточно долгое время, в официальной обстановке и практически без обратной связи. Такой способ изжил себя, потому что то же самое фактически можно организовать и без личного присутствия, например посредством записи лекции и распространения её в интернете. Популярность приобретают способы организации общения, при котором все являются активными участниками, каждый делится информацией и каждый узнает что-то новое. Пример подобной организации: все приходят в комнату, на стенках повешены листы бумаги, на листе можно написать какую-либо тему, и все кому эта тема интересна собираются рядом и делятся мнениями. Или другой способ&nbsp;&mdash; каждый участник должен сказать что-то по интересующему его вопросу ровно за 5 минут. У этого способа есть два преимущества&nbsp;&mdash; если тема скучная, то слушать её надо только 5 минут, а если тема интересная&nbsp;&mdash; то от такого сжатого изложения она становится ещё интересней.
+
Dig yourself a grave - you will need it.
-
 
+
-
== Прошедшая конференция ==
+
-
 
+
-
Generics в Java не полностью оправдывают своё название. То что в ней на данный момент реализовано скорее можно назвать overcasting. Раньше БЭ думал, что он один так считает, но на недавней конферении выяснилось что таких людей достаточно много.
+
-
 
+
-
Opensourcing of Java было защитной мерой, против действий IBM по созданию аналогичного опенсорсного проекта.
+
-
 
+
-
С большим энтузиазмом на недавней конференции обсуждалась идея реализации трансляторов с различных языков на JVM. Например, для python и ruby. IBM выделило деньги и наняло разработчиков Ruby для создания транслятора Ruby &rarr; JVM.Развивается поддержка трансляции в byte-code для динамических языков программирования.
+
-
 
+
-
Официальной темой конференции было Java on server. Сейчас в основном Java используется именно на серверах. Но обсуждалось и много неофициального. Надо признать, что позиции Java на десктопах не очень сильны. SUN пытается что-то с этим сделать, но пока явных результатов нет .Сказываются принятые ранее решения.
+
-
 
+
-
Также обсуждались слабые места современной Java.
+
-
 
+
-
Например, нет до сих пор такой простой вещи, как поддержка USB. А ведь если уж можем запускать программу где угодно, хотелось бы что бы и с железом проблем переносимости не было.
+
-
 
+
-
Обсуждалось введение в язык closure. По мнению Брюса, собственно в Java они будут полноценно включены вряд ли, скорее на JVM будет запускаться какой-нибудь из языков, в котором они уже есть. Например, очень интересен язык SCALA. Он был разработан человеком, участвовавшим в создании компилятора Java 5. SCALA&nbsp;&mdash; по мнению БЭ&nbsp;&mdash; язык нового поколения, который очень вероятно станет первым представителем направления из ему подобных. Ещё один интересный язык, который БЭ вспомнил в связи с SCALA,&nbsp;&mdash; NICE (разработчик один француз, правда сейчас он куда-то исчез&nbsp;&mdash; может быть, на работу наняли)
+
-
 
+
-
Кусок про то как удобны надстройки (видимо компиляторы других языков в байткод) над jvm. Ранее узкие места переписывались на С, С++. <...> При компиляции в байткод то что было написано на изначально медленных динамических и/или функциональных языках неплохо оптимизируется. Так же теперь вместо переписывания библиотек, можно будет просто писать bridges позволяющие использовать библиотеки напрямую.
+
-
 
+
-
Распараллеливание. В последних версиях распараллеливание намного улучшилось. Появилась поддержка работы с кэшем при распараллеливании. Стало понятно, что те подходы, которые применялись раньше в этой области были не совсем верными и приводили к появлению редко проявляющихся и очень трудноуловимых багов. Но в последнее время появились свежие идеи в этой области, которые позволили значительно улучшить ситуацию. О них можно почитать в &laquo;Java concurrency in practice&raquo;. Параллелизм весьма сложная вещь. БЭ неоднократно казалось, что вот вроде бы все он понимает, и вдруг выяснялось что на самом деле все не так (Это вообще часто случается в CS). В общем счёте он занимался этой проблемой 2,5 года(правда, не непрерывно, но если сложить время которое занимался&nbsp;&mdash; получится 2,5 года). Он может сказать, что является экспертом в этой области. Но не может сказать что однозначно до конца её понимает. Вообще параллелизм&nbsp;&mdash; весьма насущная проблема. Уже сейчас на большинстве десктопов 2 ядра, а в недалеком будущем будет по 8. И это нельзя игнорировать&nbsp;&mdash; на одном ядре и на двух поведение программы может быть совершенно различно. На 2 могут появляться неожиданные баги, невозможные на одном (в оригинале&nbsp;&mdash; которые невозможно отловить запуская программу на одном ядре/проце). Но при этом людей, действительно разбирающихся в распараллеливании в мире можно пересчитать по пальцам. Про параллельную программу невозможно доказать её правильность&nbsp;&mdash; только показать неправильность. Появляется вопрос&nbsp;&mdash; как же дать возможностям людям писать распараллеливающиеся приложения не затрачивая при этом чуть ли не всю жизнь на то что бы разобраться в этой непростой области. В SCALA для решения этой проблемы введена концепция Active Object (Actor, АО). В обычной модели ООП объекты пассивны. Мы можем вызвать их методы, но сами они ничего делать не начинают. В отличие от них каждому AO сопоставлена своя нить (thread).
+
-
 
+
-
При вызове метода объект не начинает сразу его выполнять, а помещает вызов в свою внутреннюю очередь, которую выполняет строго последовательно(пока предыдущий метод не завершится новый из очереди не берётся). Такой подход несколько ограничивает параллелизм, но позволяет избежать очень многих ошибок и потому оправдывает себя. В SCALA концепция АО поддерживается на уровне языка. Так же там то ли собираются реализовать, то ли реализовали, но ещё не полностью агентов (agent)&nbsp;&mdash; дальнейшую эволюцию идеи АО, в которой объекты могут перемещаться между физическими потоками&nbsp;&mdash; например, ездить с машины на машину, с процессора на процессор. Пример, где такой подход очень выгоден: Однажды БЭ пригласили в качестве консультанта в проект, основной целью которого было моделирование перемещения людей по городу и между городами. Причём модель была очень низкоуровневая и подробная, и требовала большого количества вычислений. БЭ просили дать рекомендаии по её распараллеливанию. Эта задача&nbsp;&mdash; одна из тех, к которым естественно и удобно применить концепцию агентов. Также SCALA поддерживает многое от функциональной парадигмы. Более подробно об этом можно прочитать в книге [http://scala.epfl.ch/docu/files/ScalaByExample.pdf "SCALA by example"]. Из фич можно назвать, помимо прочего:
+
-
* замыкания
+
-
* functions as first class-objects
+
-
* поддержку кортежей (tuples) в языке
+
-
* хороший pattern matching
+
-
* component support (причём на более высоком уровне абстракции, чем java beans).
+
-
 
+
-
Синтаксис. Синтаксис имеет значение! То что в Java программы объёмные – не есть хорошо. Многие говорят, что это не проблема, потому что всяческие IDE позволяют быстро набирать код даже на Java, но ведь программы чаще читают, чем пишут, поэтому о читабельности тоже надо заботиться, а огромная по размерам программа не читабельна.
+
-
 
+
-
В отличие от с#. в java нет abstract mechanism for events.
+
-
 
+
-
Последняя конференция оставила многих в ужасе. На ней была сделана попытка честно оценить проблемы Java.
+
-
 
+
-
Должен ли java script соревноваться с флэшем или скорее интегрироваться с ним?
+
-
 
+
-
В последенее врмя крупные заказчики все больше склоняются в сторону использования flash на своих сайтах – оно красивое и легко в устновке. Да, в ajax можно сделать некоторые оригинальные интересные вещи, но у jscript есть свои проблемы:
+
-
* под разные браузеры надо фактически писать разный код, от чего программеры с криками ужаса разбегаются.
+
-
* инсталляция jvm сложнее инсталляции flash media player. Для продвинутых пользователей это возможно не имеет значения, но для большинства — весьма актуально. К примеру отец БЭ flash media player поставил сам, даже толком не зная, что это такое, а вот с jvm возникли сложности(например, непонятно какую версию устанавливать, итп). Проблема упрощения процесса инсталляции серьёзно обсуждается.
+
-
 
+
-
В итоге на появившейся вопрос&nbsp;&mdash; должен ли jscript конкурировать с flash или интегрироваться? С точки зрения БЭ ответом будет скорее второе, потому что первое слабо реализуемо на практике. Обещают, что следующая версия jscript будет много лучше, но это только обещания.
+
-
 
+
-
== How to move OS forward ==
+
-
 
+
-
К примеру, было обнаружено, что хардварная реализация трансцендентных математических функций не всегда соответствует стандарт IEEE (в последних знаках иногда возникает погрешность), и было принято решение реализовывать все такие функции программно. Это обеспечило идентичность работы программ в любой среде, но очень сильно замедлило выполнение. Причем отключить эту функциональность весьма сложно. Это можно пофиксить, но это весьма сложно. К тому же этому противодействуют некоторые организации. Тем не менее, проблему надо решать. Для этого возможно придется создавать какие-нибудь фонды, организации.
+
-
 
+
-
== Q&A ==
+
-
 
+
-
'''Q''': Возможно ли проводить openspace конференции в России?
+
-
 
+
-
'''A''': Да, конечно, но поначалу это не просто, так как надо приучить людей к мысли что можно собраться и для этого нет необходимости в организационном комитете или чем-то подобном. Когда БЭ начинал делать подобные конференции, то собрать людей вместе у него получилось далеко не сразу. Зато, после того как такие конференции всё-таки проходят участники заявляют, что это были лучшие конференции из всех, в которых им доводилось участвовать.
+
-
 
+
-
'''Q''': Когда появятся реализации других языков на jvm умрет ли с++?
+
-
 
+
-
'''A''': Область применения с++ будет постепенно сужаться. Это вообще естественный процесс для языков программирования. До сих пор есть люди пишущие на коболе. There are people programming in FORTRAN out there.
+
-
 
+
-
Вы интересуетесь потому что хотите узнать что лучше учить? Учить надо в любом случае несколько языков. С каждым новым выученным языком начинаешь видеть новые приёмы в тех языках, которые знал раньше. Надо знать как минимум два языка программирования. На конференции меня много спрашивали&nbsp;&mdash; стоит ли использовать тот или иной специфический инструмент. На самом деле ответ на все подобные вопросы&nbsp;&mdash; It depends. Вполне возможно существуют задачи, которые оптимально решать на VB. Правда знать только VB&nbsp;&mdash; это мрак. БЭ много видел людей с зашоренным, узким мышлением, и ничего хорошего в этом нет.
+
-
 
+
-
'''Q''': Что Вы думаете о WEB 2.0 и об идее контента пополняемого пользователями?
+
-
 
+
-
'''А''': Википедия&nbsp;&mdash; это, безусловно, отличная вещь, хотя её и становится всё труднее защищать от вандализма и предвзятости, и необходимость такой защиты накладывает некоторые ограничения на свободу модификации информации. Но всё же у пользователей должна быть какая-нибудь мотивация, иначе качество их работы будет оставлять желать лучшего&nbsp;&mdash; пример tagging.
+
-
 
+
-
'''Q''': Почему люди пишут опенсорс?
+
-
 
+
-
'''А''': Потому что получают выгоду, но не денежно-материальную, а эмоциональную, сродни удовольствию от участия в многопользовательской on-line игре.
+
-
 
+
-
'''Q''': Что Вы думаете о изучении Java как первого языка программирования?
+
-
 
+
-
'''A''': Java&nbsp;&mdash; плохой первый язык. Как и C++. Чтобы написать на Java Hello world, надо объяснить void, public, class, static… Поэтому увлекает не сразу. У того же Python более gentle learning curve. Но у Python другая проблема. К примеру, какие-то знакомые БЭ начали изучать Python, но вскоре им под руку подвернулся VB и они увлеклись им, потому что начинающим всегда хочется видеть как что-то меняется на экране, картинку. Но если сравнивать Java и C++, то даже C++ лучше как первый язык&nbsp;&mdash; hello world написать проще.
+
-
 
+
-
'''Q''': При написании транслятора C &rarr; JVM не возникнут ли слишком большие сложности из-за больших различий в дизайне, и не придётся ли изменять JVM для поддержки трансляторов с других языков?
+
-
 
+
-
'''A''': Да, это проблема. Но она не столь критична. Сейчас пишутся трансляторы для языков типа SCALA и с ними таких проблем не возникает. Но ваш скептицизм понятен. Возможно, именно эту задачу удастся решить благодаря открытию исходного кода JVM.
+

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы