Текущая версия |
Ваш текст |
Строка 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 сообществе. Основная идея — отсутствие деления «лектор-аудитория», когда один о чем-то рассказывает многим достаточно долгое время, в официальной обстановке и практически без обратной связи. Такой способ изжил себя, потому что то же самое фактически можно организовать и без личного присутствия, например посредством записи лекции и распространения её в интернете. Популярность приобретают способы организации общения, при котором все являются активными участниками, каждый делится информацией и каждый узнает что-то новое. Пример подобной организации: все приходят в комнату, на стенках повешены листы бумаги, на листе можно написать какую-либо тему, и все кому эта тема интересна собираются рядом и делятся мнениями. Или другой способ — каждый участник должен сказать что-то по интересующему его вопросу ровно за 5 минут. У этого способа есть два преимущества — если тема скучная, то слушать её надо только 5 минут, а если тема интересная — то от такого сжатого изложения она становится ещё интересней.
| + | Dig yourself a grave - you will need it. |
- | | + | |
- | == Прошедшая конференция ==
| + | |
- | | + | |
- | Generics в Java не полностью оправдывают своё название. То что в ней на данный момент реализовано скорее можно назвать overcasting. Раньше БЭ думал, что он один так считает, но на недавней конферении выяснилось что таких людей достаточно много.
| + | |
- | | + | |
- | Opensourcing of Java было защитной мерой, против действий IBM по созданию аналогичного опенсорсного проекта.
| + | |
- | | + | |
- | С большим энтузиазмом на недавней конференции обсуждалась идея реализации трансляторов с различных языков на JVM. Например, для python и ruby. IBM выделило деньги и наняло разработчиков Ruby для создания транслятора Ruby → JVM.Развивается поддержка трансляции в byte-code для динамических языков программирования.
| + | |
- | | + | |
- | Официальной темой конференции было Java on server. Сейчас в основном Java используется именно на серверах. Но обсуждалось и много неофициального. Надо признать, что позиции Java на десктопах не очень сильны. SUN пытается что-то с этим сделать, но пока явных результатов нет .Сказываются принятые ранее решения.
| + | |
- | | + | |
- | Также обсуждались слабые места современной Java.
| + | |
- | | + | |
- | Например, нет до сих пор такой простой вещи, как поддержка USB. А ведь если уж можем запускать программу где угодно, хотелось бы что бы и с железом проблем переносимости не было.
| + | |
- | | + | |
- | Обсуждалось введение в язык closure. По мнению Брюса, собственно в Java они будут полноценно включены вряд ли, скорее на JVM будет запускаться какой-нибудь из языков, в котором они уже есть. Например, очень интересен язык SCALA. Он был разработан человеком, участвовавшим в создании компилятора Java 5. SCALA — по мнению БЭ — язык нового поколения, который очень вероятно станет первым представителем направления из ему подобных. Ещё один интересный язык, который БЭ вспомнил в связи с SCALA, — NICE (разработчик один француз, правда сейчас он куда-то исчез — может быть, на работу наняли)
| + | |
- | | + | |
- | Кусок про то как удобны надстройки (видимо компиляторы других языков в байткод) над jvm. Ранее узкие места переписывались на С, С++. <...> При компиляции в байткод то что было написано на изначально медленных динамических и/или функциональных языках неплохо оптимизируется. Так же теперь вместо переписывания библиотек, можно будет просто писать bridges позволяющие использовать библиотеки напрямую.
| + | |
- | | + | |
- | Распараллеливание. В последних версиях распараллеливание намного улучшилось. Появилась поддержка работы с кэшем при распараллеливании. Стало понятно, что те подходы, которые применялись раньше в этой области были не совсем верными и приводили к появлению редко проявляющихся и очень трудноуловимых багов. Но в последнее время появились свежие идеи в этой области, которые позволили значительно улучшить ситуацию. О них можно почитать в «Java concurrency in practice». Параллелизм весьма сложная вещь. БЭ неоднократно казалось, что вот вроде бы все он понимает, и вдруг выяснялось что на самом деле все не так (Это вообще часто случается в CS). В общем счёте он занимался этой проблемой 2,5 года(правда, не непрерывно, но если сложить время которое занимался — получится 2,5 года). Он может сказать, что является экспертом в этой области. Но не может сказать что однозначно до конца её понимает. Вообще параллелизм — весьма насущная проблема. Уже сейчас на большинстве десктопов 2 ядра, а в недалеком будущем будет по 8. И это нельзя игнорировать — на одном ядре и на двух поведение программы может быть совершенно различно. На 2 могут появляться неожиданные баги, невозможные на одном (в оригинале — которые невозможно отловить запуская программу на одном ядре/проце). Но при этом людей, действительно разбирающихся в распараллеливании в мире можно пересчитать по пальцам. Про параллельную программу невозможно доказать её правильность — только показать неправильность. Появляется вопрос — как же дать возможностям людям писать распараллеливающиеся приложения не затрачивая при этом чуть ли не всю жизнь на то что бы разобраться в этой непростой области. В SCALA для решения этой проблемы введена концепция Active Object (Actor, АО). В обычной модели ООП объекты пассивны. Мы можем вызвать их методы, но сами они ничего делать не начинают. В отличие от них каждому AO сопоставлена своя нить (thread).
| + | |
- | | + | |
- | При вызове метода объект не начинает сразу его выполнять, а помещает вызов в свою внутреннюю очередь, которую выполняет строго последовательно(пока предыдущий метод не завершится новый из очереди не берётся). Такой подход несколько ограничивает параллелизм, но позволяет избежать очень многих ошибок и потому оправдывает себя. В SCALA концепция АО поддерживается на уровне языка. Так же там то ли собираются реализовать, то ли реализовали, но ещё не полностью агентов (agent) — дальнейшую эволюцию идеи АО, в которой объекты могут перемещаться между физическими потоками — например, ездить с машины на машину, с процессора на процессор. Пример, где такой подход очень выгоден: Однажды БЭ пригласили в качестве консультанта в проект, основной целью которого было моделирование перемещения людей по городу и между городами. Причём модель была очень низкоуровневая и подробная, и требовала большого количества вычислений. БЭ просили дать рекомендаии по её распараллеливанию. Эта задача — одна из тех, к которым естественно и удобно применить концепцию агентов. Также 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 возникли сложности(например, непонятно какую версию устанавливать, итп). Проблема упрощения процесса инсталляции серьёзно обсуждается.
| + | |
- | | + | |
- | В итоге на появившейся вопрос — должен ли 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.
| + | |
- | | + | |
- | Вы интересуетесь потому что хотите узнать что лучше учить? Учить надо в любом случае несколько языков. С каждым новым выученным языком начинаешь видеть новые приёмы в тех языках, которые знал раньше. Надо знать как минимум два языка программирования. На конференции меня много спрашивали — стоит ли использовать тот или иной специфический инструмент. На самом деле ответ на все подобные вопросы — It depends. Вполне возможно существуют задачи, которые оптимально решать на VB. Правда знать только VB — это мрак. БЭ много видел людей с зашоренным, узким мышлением, и ничего хорошего в этом нет.
| + | |
- | | + | |
- | '''Q''': Что Вы думаете о WEB 2.0 и об идее контента пополняемого пользователями?
| + | |
- | | + | |
- | '''А''': Википедия — это, безусловно, отличная вещь, хотя её и становится всё труднее защищать от вандализма и предвзятости, и необходимость такой защиты накладывает некоторые ограничения на свободу модификации информации. Но всё же у пользователей должна быть какая-нибудь мотивация, иначе качество их работы будет оставлять желать лучшего — пример tagging.
| + | |
- | | + | |
- | '''Q''': Почему люди пишут опенсорс?
| + | |
- | | + | |
- | '''А''': Потому что получают выгоду, но не денежно-материальную, а эмоциональную, сродни удовольствию от участия в многопользовательской on-line игре.
| + | |
- | | + | |
- | '''Q''': Что Вы думаете о изучении Java как первого языка программирования?
| + | |
- | | + | |
- | '''A''': Java — плохой первый язык. Как и C++. Чтобы написать на Java Hello world, надо объяснить void, public, class, static… Поэтому увлекает не сразу. У того же Python более gentle learning curve. Но у Python другая проблема. К примеру, какие-то знакомые БЭ начали изучать Python, но вскоре им под руку подвернулся VB и они увлеклись им, потому что начинающим всегда хочется видеть как что-то меняется на экране, картинку. Но если сравнивать Java и C++, то даже C++ лучше как первый язык — hello world написать проще.
| + | |
- | | + | |
- | '''Q''': При написании транслятора C → JVM не возникнут ли слишком большие сложности из-за больших различий в дизайне, и не придётся ли изменять JVM для поддержки трансляторов с других языков?
| + | |
- | | + | |
- | '''A''': Да, это проблема. Но она не столь критична. Сейчас пишутся трансляторы для языков типа SCALA и с ними таких проблем не возникает. Но ваш скептицизм понятен. Возможно, именно эту задачу удастся решить благодаря открытию исходного кода JVM.
| + | |