tag:blogger.com,1999:blog-654279083390275842.post8452122827788052249..comments2024-03-19T12:22:43.654+03:00Comments on Размышлизмы eao197: [prog.flame] Попрограммировал на Java, делюсь впечатлениями. Часть II. Какую бы Java хотелось иметь (минимальный вариант).eao197http://www.blogger.com/profile/17283739752119445290noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-654279083390275842.post-1164367887468941442010-04-16T07:26:10.727+03:002010-04-16T07:26:10.727+03:002SiGMan: вот и я под такими впечатлениями все это ...2SiGMan: вот и я под такими впечатлениями все это и написал.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-464186291863111062010-04-16T06:26:55.124+03:002010-04-16T06:26:55.124+03:00В принципе, согласен - проблема явы в черезмерной ...В принципе, согласен - проблема явы в черезмерной многословности, что особенно ломает после всяких питонов и руби. Все этих конструкции с классами на каждый чих, без тайпдефов и других полезных мелочей воспитывают в программисте машинстку и ухудшают читаемость кода. Умные IDE с автогенерацией кода только усугубляют ситуацию.SiGManhttps://www.blogger.com/profile/01040328722778662964noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-42838092534947762042010-04-15T19:12:38.178+03:002010-04-15T19:12:38.178+03:002xonix:
>>typedef-ы.
>Неоправданное усл...2xonix:<br /><br /><i>>>typedef-ы.<br /><br />>Неоправданное усложнение языка. Замедлит компиляцию.</i><br /><br />Заблуждение. Чистый C-шный код с typedef компилируется на порядки быстрее С++ного кода с шаблонами.<br /><br /><i>>Кстати, писать полные имена классов - не круто.</i><br /><br />Не круто, но от совпадения имен никто не защищен.<br /><br /><i>>>Во-вторых, в Java очень хотелось бы иметь свободные функции<br /><br />>Зачем? 1.Это усложнит стройную ООП-модель, добавляя лишние сущности</i><br /><br />Стройная ООП-модель хороша только в теории. На практике ООП всего лишь один из вариантов.<br /><br /><i>>2. сделает код Java не таким однородным, давая разработчикам больше свободы самовыражения.</i><br /><br />В этом и смысл. Я знаю нескольких разработчков, которым не нравится Java из-за ограничения самовыражения.<br /><br /><i>>А это плохо (вспомним перл).</i><br /><br />А еще вспомним Python и Ruby, где с этим проблем нет.<br /><br /><i>>>В-третьих, в Java очень не хватает перегрузки операторов.<br /><br />>Это может быть удобным при разработке в блокноте (меньше писать) а при разработке в нормальной IDE - только мешает. В самом деле, сейчас пишешь имя объекта, ставишь точку и у тебя выпадает полный набор методов. По-Вашему же - некоторые "методы" окажутся операторами. Плохо. И опять же - лишний синтаксический шум.</i><br /><br />Не поверю в то, что IDE для статически-типизированного языка будет не в состоянии сделать такой же продвинутый autocomplete для операторов точно так же, как он это делает для точки.<br /><br /><i>>>В-четвертых, очень бы хотелось видеть в Java автоматический вывод типов для переменных.<br /><br />>Самое вредное хотение. Ибо исходник пишется прежде всего для повторного чтения. А когда я вижу код<br /><br />auto pdus = parseStream(from);<br /><br />я могу только догадываться о сигнатуре метода parseStream.</i><br /><br />Ну вы уж определитесь, пишите ли вы код в блокноте или в IDE. Поскольку в IDE подсветка типа для переменной будет работать просто на "Ура!"<br /><br /><i>>Во-вторых - это опять таки навредит хорошей IDE, ибо в ней написав<br />SomeCoolIface a = new{тут нажимаем некий шорткат}<br />я получу</i><br /><br />А имя SomeCoolIface откуда возьмется? Не святой же дух его напишет, а вы. Вот вы и будете писать auto a = new Some{тут вы получите некий шорткат по возможным конструкторам}.<br /><br />Так что проблема высосана из пальца.<br /><br />А вот объем кода auto сокращат изрядно.<br /><br /><i>>>В-восьмых, в Java хотелось бы иметь возможность помещать части одного класса в несколько исходных файлов.<br /><br />>Лишнее. Используйте наследование (от автосгенеренного класса).</i><br /><br />Как по мне, так это выполнение через задницу того, что можно сделать нормально. Тем более в языке с только одиночным наследованием.<br /><br /><i>>Ява это ява. Она потому и популярна, что многие её "недочеты" на самом деле - её сильные стороны.</i><br /><br />Я описал то, чего мне в Яве не хватает. И, практика показала, что с тему, кому в Яве всего достаточно, мне не по пути.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-7551878372908218242010-04-15T18:11:32.857+03:002010-04-15T18:11:32.857+03:00Это все НЕ НУЖНО. Возможно, за исключением using.
...Это все НЕ НУЖНО. Возможно, за исключением using.<br /><br />>>Итак, в первую очередь в Java мне нужны typedef-ы.<br /><br />Неоправданное усложнение языка. Замедлит компиляцию. <br />Кстати, писать полные имена классов - не круто. Надо импортировать необходимые классы и писать:<br /><br />private Map parseStream(ReadableByteChannel from)<br /><br />>>Во-вторых, в Java очень хотелось бы иметь свободные функции<br /><br />Зачем? 1.Это усложнит стройную ООП-модель, добавляя лишние сущности 2. сделает код Java не таким однородным, давая разработчикам больше свободы самовыражения. А это плохо (вспомним перл).<br /><br />>>В-третьих, в Java очень не хватает перегрузки операторов.<br /><br />Это может быть удобным при разработке в блокноте (меньше писать) а при разработке в нормальной IDE - только мешает. В самом деле, сейчас пишешь имя объекта, ставишь точку и у тебя выпадает полный набор методов. По-Вашему же - некоторые "методы" окажутся операторами. Плохо. И опять же - лишний синтаксический шум.<br /><br />>>В-четвертых, очень бы хотелось видеть в Java автоматический вывод типов для переменных.<br /><br />Самое вредное хотение. Ибо исходник пишется прежде всего для повторного чтения. А когда я вижу код<br /><br /> auto pdus = parseStream(from);<br /> <br />я могу только догадываться о сигнатуре метода parseStream.<br />Во-вторых - это опять таки навредит хорошей IDE, ибо в ней написав<br />SomeCoolIface a = new{тут нажимаем некий шорткат}<br />я получу<br /><br />SomeCoolIface a = new SomeCoolClass();<br /><br />или же<br /><br />SomeCoolIface a = {опять некий шорткат, получаем}getSomeCoolObj()<br /><br />а в вашем случае мне это придется писать ручками.<br /><br />>>В-пятых, в Java не хватает lambda-функций. <br /><br />Вроде, планируются в новой версии.<br /><br />>>В-восьмых, в Java хотелось бы иметь возможность помещать части одного класса в несколько исходных файлов.<br /><br />Лишнее. Используйте наследование (от автосгенеренного класса).<br /><br />>>Еще одна штука меня раздражала и которую, имхо, следует устранить.<br /><br />В хорошей IDE такой проблемы просто не возникает. Т.к. все импортируется автоматически. У меня все импорты даже свернуты и я практически их даже никогда не вижу. =)<br /><br />Одним словом, имхо, нет смысла превращать яву в C++ или D ) Ява это ява. Она потому и популярна, что многие её "недочеты" на самом деле - её сильные стороны.xonixhttps://www.blogger.com/profile/10521854320903151029noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-4326160430577391702010-04-15T12:48:39.090+03:002010-04-15T12:48:39.090+03:00>Хотя к Mono можно предъявить достаточно много ...<i>>Хотя к Mono можно предъявить достаточно много претезний: и количество багов, и сроки их исправления. И отсутствие некоторых библиотек, которые входят в .NET и которые логично было бы использовать.</i><br /><br />А еще я слышал нарекания в отношении производительности генерированного Mono-вским компилятором кода и скоростью работы Mono-вского GC.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-36992038449032845012010-04-15T12:41:37.360+03:002010-04-15T12:41:37.360+03:00>> Вот только C# и .Net, по большому счету, ...>> Вот только C# и .Net, по большому счету, нифига не кроссплатформенные.<br /><br />По большому счёту - нифига. С JVM сравнить нельзя.<br />Но если брать Windows/Linux, и Mono - и под Mono (а не .NET) вести разработку, то всё не так плохо. В качестве UI (если он нужен) - GTK (может быть есть wxWidgets порт, не знаю).<br />Хотя к Mono можно предъявить достаточно много претезний: и количество багов, и сроки их исправления. И отсутствие некоторых библиотек, которые входят в .NET и которые логично было бы использовать.<br />Для информации, в общем.Alexhttps://www.blogger.com/profile/06712081717722214061noreply@blogger.com