Я сейчас постепенно перехожу по долгу службы на Джаву (всю сознательную жизнь работал на скриптовых языках типа перла/пхп/питона). Читаю книжки, что-то пробую делать. Если вкратце, впечатления крайне неприятные.
Джава позиционируется как простой язык (в сравнении, очевидно, с С++). В каком-то смысле так и есть, Джава - крайне однозначный, строгий и избыточно подробный язык. Когда тебе нужно сказать одно слово, на Джаве придется сказать четыре или пять. Одно по существу, а другие - чтобы оградить себя от своей и чужой тупости. Краткое содержание одной из лучших книг по Джаве ("Философия Java" Брюса Экеля) примерно таково:
Джава это отличный язык, потому что программистам нельзя разрешать вот то, вот это, вот так и вот этак. А Джава как раз это не разрешает. А теперь, блин, давайте еще пятьсот страниц соображать, как нам при таких суровых ограничениях запрограммировать хоть что-нибудь полезное понятным хоть кому-нибудь кодом.
А понятно не получается. И в этом большой провал Джавы - пока ты не стал адептом высшей ступени, в большом проекте не будет понятно ни хрена. Абстракция слишком велика, а правила игры слишком строги. Простой пример из свежей практики. В Джаве мне сильно понравилась одна деталь: встроенная поддержка коллекций с разными реализациями хранения данных, но едиными интерфейсами (это очень круто, hands down, я не собираюсь спорить даже). При этом существует определенная немалая масса людей, которая переделывает эти встроенные коллекции, добавляя в них кое-какие штуки из функционального программирования. Эти штуки, вроде бы, делают программирование с использованием коллекций более удобным. Но друзья, это сопровождается такой дикой синтаксической кашей, что хочется убить изобретателя:
Mapper<String, ListF<String>> StringUtils.splitM(final String pattern) {
return new Mapper<String, ListF<String>> {
public ListF<String> map(String string) {
return CollectionsF.list(string.split(pattern));
}
}
}
Даже не понимая кода, чувствуется, что настоящего смысла здесь ровно на одну строчку, да? А написано четыре, и они ни в одном месте сами себя пояснить не могут. Они нужны, чтобы насытить чрево Джавы, удовлетворяя ее требования по защите кода от программиста. Создатель этой макабрической конструкции пишет в своем ЖЖ, издеваясь: "На самом деле ничего сложного тут нет" - и это диагноз.
Я не понимаю этого. Заметьте, не говорю, что это неправильный в корне подход. Я просто не понимаю, зачем джавайцы терпят свой язык, за какие заслуги? Я могу на спор засрать проект на Джаве плохим кодом, который сначала будет работать, а через неделю сломается, а потом снова будет работать, и ни один компилятор ошибку не найдет. Да что там - у меня уже сейчас есть проект с такими ошибками (чужими), которые неделю искать нужно. Засрать проект на Джаве ни на йоту не сложнее, чем проект на пхп, вот уж поверьте. Тогда зачем использовать Джаву, такой перенасыщенный текстом, инфраструктурой, общим неудобством кодирования язык?
Впрочем, ладно. Наверняка я ворчу только потому что меня сорвали с насиженного уже питона.
2 comments Оставить комментарий Add to Memories Tell a Friend