Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
int buttonState = R.id.power_widget_button_indic; // Зачем-то объявили лишнюю переменную, ссылающуюся на константу
ImageView indic = (ImageView) mView.findViewById(R.id.power_widget_button_indic); // Но здесь используем константу, а не новую, более короткую переменную!
if ((Settings.System.getInt(context.getContentResolver(), Settings.System.EXPANDED_HIDE_INDICATOR, 0)) == 1) {
indic.setVisibility(8); // Для установки видимости существуют константы View.VISIBLE, View.INVISIBLE и View.GONE, а циферка 8 вообще ни о чем мне не говорит
} else {
indic.setVisibility(0); // И еще раз
}
Это - кусок кода из Android 4, вернее, из CyanogenMod 9. Репозиторий frameworks_base, файл packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/PowerButton.java. И такого говнокода в исходниках Android - полно :(
Ну, не всё. Сегментация рынка, ява-машина и идеология интерфейса.
У меня, собсна, претензия ровно одна. Благодаря андроиду узкоглазые вылезли на рынок электроники "от ста баксов", например, медиаплееров или сотовых телефонов. Там, где раньше было "вставьте сима", сейчас стоит ведроид, собранный нашими жёлтыми братьями из говна и палочек. И в нём даже запустится недомаркет.
Не всегда и не везде. Но это вбивает гвозди в гроб фирм, которые делали не-андроиды. Соответственно, это снижает видовое разнообразие. Не думаю, что мне нужна в моём будущем монополия гугола ещё и на телефоны. Нет особого желания выбирать между маздаем, яблоком и роботом. Есть и другие причины, но не будем о грустном.
На чем угодно не получится - есть вещи, которые Ява-машина не умеет (например tail call elimination). Не то, чтобы прям без этого никак, но для некоторых языков - совсем никак. Да и язык созданный в рассчете на определенные низкоуровневые команды будет лучше работать, чем адаптация - так что в итоге не особо чего получится.
Ну некоторые языки это умеют сами, без расчёта на поддержку со стороны VM, например Nemerle с расчетом на портирование на JVM умеет делать tail call optimization самостоятельно.
Clojure и Scala тоже умеют, но с ограничениями, наложенными jvm: оптимизировать можно только случай, когда функция вызывает сама себя (в Clojure для этого есть ключевое слово recur). Взаимнорекурсивные вызовы не могут быть оптимизированы, на этот случай в Clojure есть функция trampoline, в Scala вроде ручками это нужно писать.
Ну или стандартная отладка трейса или серьёзное выполнение кода с возможной записью трейса в журнал. Вы же понимаете, что всё в жизни всегда компромисс. Не бывает полностью оптимальных со всех сторон технологий. Жить стало бы не интересно.
Понимаешь, мне противны песочные языки. Может быть я не прав, но мне это видится так:
Если мне понадобится какая-то страная поебень, то даже в долбанных крестах я смогу выкрутиться и изобрести костыль, который даст мне эту поебень, а в песочном языке уже костыль не сделаешь, в песочном языке надо подключить модуль Ааа.ббб.ввв.ггг и применить класс ддд.еее, который это делает. Так вот, я ненавижу учить что-либо наизусть, у меня мозг вообще так устроен, память пипец какая дырявая, чтобы что-то запомнить, надо либо 100 раз повторить, либо врубиться.
Так вот в коренных языках достаточно запомнить небольшой набор того, что делать можно, а чего нельзя, а потом уже писать блеать код и не париться, всё, чего не хватает, можно вывести логически. А в песочном языке с логикой хуй что сделаешь, надо тупо зубрить, какой класс что делает.
Да, винапи говно в этом плане тоже отстой.
Меня бесит необходимость что-то читать, когда можно вывести логически.
Коренные языки хороши тем, что в них есть на чёрный день возможность сделать что-то хотя бы через жопу, если не получается нормально. Это как последнее прибежище.
Я тебе уже всё раскрыл. На коренном языке можно сделать ВСЁ (пусть и через задницу), если выучил небольшой набор правил. На песочном надо зубрить (или гуглить) намного больше.
BitBlt.
Джависты не знают системные функции для вывода изображения?
Понимаешь, чтобы рисовать руками, надо выучить только этот BitBlt. Чтобы рисовать библиотекой, надо выучить пол-библиотеки.
У всего есть свои плюсы. Не все же любят дрочить низкоуровневое.
Если посмотреть с другой стороны, как показывает практика, итоговая реализация не-нативных приложений полно вбирает в себя недостатки, типа тормознутости и общей ужоснаховости, при этом из достоинств - кроссплатформенность (которая, кстати, нивелируется, и всё благодаря обилию безымянных поделок дядюшек Лю и тому, что производители все кто во что горазд; итог - рыхлая платформа, где непонятно, какое будет железо, разрешение, экран и всё в том же духе) и, наверное, всё. Теоретически, ещё не должно быть вирусов, но можно в новостях почитать про очередное приложение из маркета, которое ворует деньги.
Как-то так, да.
Понимаешь, ты вроде бы прав - я со своим подходом "есть лень разбираться в либе, то навелосипедю" застрял на уровне младшего студенческого возраста, но в то же время я не могу (даже осознавая свою непрогрессивность) перестать испытывать дискомфорт при попытке написать что-либо на песочном языке.
Ну я как бы не доказываю, что жаба - отстой, я доказываю только то, что мне она очень неприятна, это чисто мои тараканы и всё такое.
Я никогда не работал над промышленным кодописанием, потому мне сложно сказать, за что так любит джаву индустрия. Наверное, какая-то причина для этого есть.
Говорят, что некоторые блокеры показывают лицензионное соглашение, которое гласит "я согласен заблокировать свой рабочий стол сроком на тридцать дней". И кто-то с ним даже соглашается. Но это не повод говорить, что блокеров не существует и они не опасны.
Сейчас наивных всё меньше и меньше, но до сих пор находятся те, кто с удовольствием заплатит за разблокировку.
Моё изначальное утверждение неверно, ибо смс-сендеры ≠ вирусы, но лежит где-то в близкой плоскости. Я думаю, что платформа не даст стопроцентной гарантии, какой бы песочной она не была. Злоумышленники есть, дыры в платформе - тоже.
Тарас в чём-то прав. Я люблю использовать библиотеки, особенно хорошо спроектированные. Однако при использовании даже самого хорошего фреймворка возникают потребности, не предвиденные его авторами. Абстракции начинают подтекать. И тут возникают костыли, смотреть на которые противно, но жить без которых не получается.
Но с фреймворком обычно всё же лучше, чем без него.
Небольшой секрет, ни одна мобильная платформа (выкидыши вроде Meego не рассматриваются, ибо интересны ровно 1.5 человекам) не позволяет писать "на чем удобнее". Всякие монодроиды - это костыли, которые хз зачем нужны, потому что Android SDK великолепен.
У миго концепция правильная, но в нокии сидят упоротые дебилы. На этот счёт есть латинская поговорка - "кого боги хотят наказать, того они лишают разума".
Android SDK уёбищен. Нет, чтобы сразу подсунуть текстовый файл компилятору и получить готовую рабочую программу, нет, надо ещё вместе с ней тащить гору всякого говна, манифестов и прочей поебени, которую ещё надо вручную заполнять всякой хуетой, не имеющей отношение к программному коду, и не дай бог хоть в одной букве ошибёшься или нечаянно в начало добавишь пустую строку этой иначе эту хуйня либо не скомпилируется, либо без единой ошибки кокомпилятора вылетит при запуске.
И не дай бог поставить эклипс в програм файлс.
Кстати, где в Android NDK <iostream>?
Ой, и не говорите таки.
У меня, собсна, претензия ровно одна. Благодаря андроиду узкоглазые вылезли на рынок электроники "от ста баксов", например, медиаплееров или сотовых телефонов. Там, где раньше было "вставьте сима", сейчас стоит ведроид, собранный нашими жёлтыми братьями из говна и палочек. И в нём даже запустится недомаркет.
А что в этом плохого? Конкуренция на рынке - это хорошо.
Вы так говорите, как будто я сказал, что будет все вместе.
Если мне понадобится какая-то страная поебень, то даже в долбанных крестах я смогу выкрутиться и изобрести костыль, который даст мне эту поебень, а в песочном языке уже костыль не сделаешь, в песочном языке надо подключить модуль Ааа.ббб.ввв.ггг и применить класс ддд.еее, который это делает. Так вот, я ненавижу учить что-либо наизусть, у меня мозг вообще так устроен, память пипец какая дырявая, чтобы что-то запомнить, надо либо 100 раз повторить, либо врубиться.
Так вот в коренных языках достаточно запомнить небольшой набор того, что делать можно, а чего нельзя, а потом уже писать блеать код и не париться, всё, чего не хватает, можно вывести логически. А в песочном языке с логикой хуй что сделаешь, надо тупо зубрить, какой класс что делает.
Да, винапи говно в этом плане тоже отстой.
Коренные языки хороши тем, что в них есть на чёрный день возможность сделать что-то хотя бы через жопу, если не получается нормально. Это как последнее прибежище.
Джависты не знают системные функции для вывода изображения?
Понимаешь, чтобы рисовать руками, надо выучить только этот BitBlt. Чтобы рисовать библиотекой, надо выучить пол-библиотеки.
Батхерт ниасилятора детектед.
Если посмотреть с другой стороны, как показывает практика, итоговая реализация не-нативных приложений полно вбирает в себя недостатки, типа тормознутости и общей ужоснаховости, при этом из достоинств - кроссплатформенность (которая, кстати, нивелируется, и всё благодаря обилию безымянных поделок дядюшек Лю и тому, что производители все кто во что горазд; итог - рыхлая платформа, где непонятно, какое будет железо, разрешение, экран и всё в том же духе) и, наверное, всё. Теоретически, ещё не должно быть вирусов, но можно в новостях почитать про очередное приложение из маркета, которое ворует деньги.
Как-то так, да.
Ну я как бы не доказываю, что жаба - отстой, я доказываю только то, что мне она очень неприятна, это чисто мои тараканы и всё такое.
Тоже мне достоинство... Такое есть только в древних динозаврах типа ассемблер\С++ и больше нигде.
>Ну и куча fail-fast проверок
Тормозное нужное только во время отладки. Так что лишь минус.
И там же пишут, что прежде чем что-то будет сделано пользовтель должен дать разрешение.
Моё изначальное утверждение неверно, ибо смс-сендеры ≠ вирусы, но лежит где-то в близкой плоскости. Я думаю, что платформа не даст стопроцентной гарантии, какой бы песочной она не была. Злоумышленники есть, дыры в платформе - тоже.
Но с фреймворком обычно всё же лучше, чем без него.
Да там даже у String нету метода isEmpty!
java.lang.String
<...>
isEmpty()
Returns true if the length of this string is 0.
У олдовых жавистов вошло в привычку писать (s. length==0), ибо до 1.6 не было.
И не дай бог поставить эклипс в програм файлс.
Кстати, где в Android NDK <iostream>?
А что на андроиде нужна даже особая плюсовая либа?