Обновить
0

Пользователь

1
Подписчики
Отправить сообщение
Разумеется! Мы же не для компьютеров пишем :-)
дубликат почему-то :-(
Пожалуй добавлю Вам в копилку примеров «неправильного» кода на Java…
> никогда не используйте
> никогда так не делайте в реальных проектах несвязанных с Brainfuck

7) Скомпилируется ли данный код и если да — то каким будет вывод?

Файл Pure.java:
\u0070u\u0062lic\u0020\u0063la\u0073\u0073
Pure \u007B\u0070ubl\u0069c\u0020st\u0061tic
void \u006Da\u0069n(\u0053tr\u0069ng[]\u0020
\u0061rgs)\u007B\u0053ys\u0074e\u006D. out.
\u0070\u0072int\u006Cn(\u0022H\u0061p\160y new \u0022+
// Мне нравится Java за её жёсткую стандартизованность.
\u0022ye\141r with Java!\r\u0022\u0029;\u007D\u007D


Ответ: Да
Пояснение: Исходный код файла Pure.java является 100% чистой Java.

Если Ваша IDE не выдерживает такого издевательства, то сделайте это без IDE:
1. Создайте файл Pure.java и скопируйте в него код.

2. Запустите команду компиляции исходного кода
javac Pure.java

3. Запустите программу в виртуальной машине Java с помощью команды:
java Pure
Речь об L в константе: 201L

BTW Следуя привычкам я бы определил константу в теле класса, убив интригу и неоднозначность восприятия:
public static final long YEAR_201 = 201L;
Спецификация определяет практически все тонкости с очень большой точностью. А значит — изучив эти тонкости один раз — вы сможете работать с ними везде.

Эх, если бы так просто было — «один раз», «одну спецификацию» и навсегда для всех проектов — не получится! :-)
В Java есть куча спецификаций, которые в совокупности определяют «хитрости» гораздо более высокого порядка.
Надо помнить, что Java это не только язык.

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

    public A(int ctorNo, Object param) {
        switch(ctorNo) {
            case 1:
                super(param);
            default:
                super();
        }
    }



Если только изучить The Java® Language Specification, то правильный ответ будет:
Это невозможно! — call to super must be first statement in constructor.

Но, The Java® Virtual Machine Specification (Second Edition) позволяет такое!
То есть задача решается в среде Java, если не использовать язык Java :-)

Да, задачи очень разные бывают. Эта задача была весьма специфическая. И для этой задачи хитрое до ненормальности решение (но не противоречащее нужным спецификациям!) было наиболее оптимальным.

Но, это факт, что большинство задач являются типовыми. И правильно для их решения использовать хорошо известные и проверенные шаблонные решения. Это так же относится и к стилю написания исходного кода. Если писать код следуя принятому «шаблонному» стилю, то его поддержка будет стоить намного дешевле.

IMHO большинство языковых «хитростей», которые содержит этот пост, я бы просто отнес к плохому стилю написания исходного кода. Изучать Java надо на положительных примерах и «набивать руку» согласно Code Conventions for the Java Programming Language.

и, конечно, «Техника молодежи».

Вспоминая картинки и статьи из этих журналов, начинаешь верить в материализацию мысли.
Сейчас многие ищут новые идеи… думаю, можно смело им посоветовать сходить в библиотеку.

image
Была игрушка, которая на очень продолжительное время приковало внимание к себе.
Особенно хорошо, если такая игрушка есть и у тебя и у твоего друга.
А папа друга вдруг тоже в неё решил поиграть, а он токарь-лекальщик…
И были вагончики, стрелки, станции, мосты и тоннели, автомобили, шлагбаумы на переездах… на большом листе пенопласта.
Главное всё в масштабе и без какой-либо идиотской детской стилизации.

Но самое «вау» произошло, когда был куплен электровоз и проложена линия электропередачи для его реально работающего(!) токосъемника, тогда пара локомотивов смогла двигаться навстречу… полное погружение…

image

Правда, даже такой стартовый набор стоил недешево… 9 рублей 50 копеек!

Для подвижной — можно сделать радиорелейку.

Волны, качка, прямая видимость (~ 30 км). Сложное и\или ненадежное и\или дорогое решение будет.
Близкий к предложенному альтернативный вариант это тропосферная связь, но тоже не без недостатков.
Сегодня утюг не варварство, а находка для шпиона!
Вот пример: В Петербург завезли китайские утюги-шпионы.
Как масштабировать предполагают? Новая единица оценки мощности дата-центра — 1 баржа?

Интересно, что Project Blackbox (2006 год) предлагал модульное решение, которое позволило бы использовать стандартные баржи, а не строить специальные. И замену оборудования сделал бы любой начинающий Администратор-крановщик.

image
«Свобода есть осознанная необходимость».
Методологии, технологии, стандарты, стили кода, функциональные и архитектурные решения [вроде весь список из статьи классифицировал],… это всё есть ограничения свобод, которые разработчики также осознанно выбирают. Если команда ограничивает себя без понимания необходимости (повинуясь только моде!), то это серьезная организационно-техническая беда. Такая команда много теряет из-за неосознанного использования системных подходов
зачем-то придуманных другими для неизвестных и непонятных целей, а может и совсем иных задач.

«У меня красивый индивидуальный почерк и хочу чтоб мои творения по нему узнавали!»
Непонимание отдельными участниками команды причин выбранных ограничений есть серьезный повод для руководителя задуматься о:
а) повышении квалификации сотрудников
б) улучшении методологической базы своих проектов.
Для света надо много датчиков — получается слишком дорого.

Как-то не вериться. 20 фотодиодов — слишком дорого?
Или этот чайник для Громозеки («400 капель… У нас все точно»)?
эволюция интерфейсов — тоже необходимая часть прогресса.

Есть тонкая грань между просто эволюцией, когда легко «случайно» породить неудобного монстра, и осознанным развитием, когда мы получаем продукт с четко запланировано-нужными (читай хорошими) свойствами.

Существует же куча руководств (guidelines) и спецификаций по графическим интерфейсам пользователей (Android, iOS и т.д. и т.п.).
Уверен, что потратив время, можно выдвинуть вполне обоснованные обвинения против вида и\или поведения элементов управления в «звонилке» за несоответствие «ихней же» спецификации (если они руководствовались таковой).

идеально удобный компьютерный интерфейс всё равно очень сильно отличается от «докомпьютерного»

Занимательно, но интерфейсы не должны сильно отличаться! Это же совсем не зависит от присутствия\отсутствия в устройстве программных компонент.
Интерфейс — набор правил взаимодействия между... в данном случае между Человеком и Смартфоном.
Допускаю, что человек-докомпьютерный ничем же не отличается от нынешней версии человека разумного
А, интерфейс обязан быть «заточен» именно под человека определенной версии.

А если еще и обратную тактильную связь добавите, то это вообще будет «Мегавау!» но удобства добавит не слишком много.

Не уверен.
Вот пример интерфейса: обратная тактильная связь на руле автомобиля — добавляет не только удобство!
Мне в Android 2.3.3 иногда помогает знание о возможности долгого нажатия на элемент списка…
тогда точно вылетает меню, если палец не дрогнет.
Нет не сложнее! Суть в том, что бы «случайно» не вставлять в мобильник кривые зеркала из комнаты смеха.
Ведь, главная задача это всего лишь :-) адекватно отразить такую Телефонную книгу в GUI без особых искажений в аспектах удобства использования (usability) и формы представления (presentation). Под словами «адекватно отразить» я понимаю все возможности реального мира при действиях с книгой, в том числе и «ужасные» типа обвести маркером, записать что-то на полях, вырвать страницу с нужным номером и положить «поближе» и т.д. А если, эти манипуляции ещё можно будет проделать всего одним пальцем (желательно большим или указательным любой руки), то, вообще, это будет «Вау!» на двухмерной поверхности, отражающей реальный мир, под названием «сенсорный экран». Если мобильник даст возможность делать подобное, то жизнь станет лучше… и в виртуальном представлении тоже.

И, да, «адекватное отражение» совсем не означает, что мы должны увидеть именно «ярлычки с буквами и авторучку». Однако, элементы управления (controls) должны быть согласованы в своём поведении с им подобными из реального мира. И если, например, происходит метаморфоза кнопки по поведению, то должна наблюдаться очевидная для пользователя разница, как между гусеницей и бабочкой.
Давным-давно в одном из журналов "Микропроцессорные средства и системы" прочитал хорошую философскую фразу: "Любая [что интересно!] компьютерная система отражает реальный мир". Таким образом, компьютеры не создают новую реальность, они искажают отражают её в себе. Основываясь на этом умозаключении, нетрудно подобрать объекты реального мира, известные обучаемому человеку, и используемые им в его окружении для подобных целей.

Например, простая ассоциация с Телефонным справочником (в смысле книга в печатном виде, точно известная человеку в годах) легко объяснит и «новое» слово «контакт» (одна запись телефон+адрес+...), не говоря уже о слове «база» (вся книга).
Опять же, никаких хаков, только чистая Java.

Хорошая фраза в теле описания большущего хака. Повеселил.
Забавно делать препарирование своего нативного окружения. Следующий шаг: «Чисто Java: Подмена нижележащей ОС (или хоста!) на лету.»

Если не секрет, то, реально интересно, что послужило толчком к поиску именно такого, скажем прямо, нетрадиционного решения? Т.е. какой JVM флаг (не из набора manageable) нестерпимо захотелось менять во время выполнения программы без её рестарта?
У нас не было задачи создавать конкуренцию

Может это и была основная стратегическая ошибка, т.е. выходить на рынок, говоря себе: «Я тут с краю на поляночке пособираю. Там же нет никого.»

Как можно вовлекать людей в конфликт

Ваш выход на рынок, заметим весьма ограниченный, уже сам по себе неминуемо порождал конфликт с интересами других людей, который требовал обязательного решения ещё до момента старта. Затраты сил, времени и\или денег были неизбежны. Вопрос же стоял только в выборе методов решения этого конфликта. И предпринимательская гениальность должна была бы помочь выбрать именно цивилизованный метод XXI века, да ещё и с минимальными затратами. Эх, только знать бы рецепт такой гениальности… я бы поделился им.
Читать статьи с названием «Роскомнадзор заблокировал...» оказывается финансово небезопасно!.
Всех с уже пошедшим праздником и не попадайтесь.

Ниже log потока сознания по событиям вчерашнего вечера, который позволит вам узнать об этом подробно.

— Всё… туплю… перерыв… чё нового, на Хабре?
— «Роскомнадзор заблокировал...» — почитаю.
— Экранчик… куда-то посылает… текст мелковат… увеличивать лень… не буду читать.
— А, если через своего… куда пошлет?
— Ну, мой-то покруче… послал, так послал… страничка красивая с лого… самое место ему.
— Говорите популярный сайт был? Гугл-то знает о нем?
— Батюшки, у него партнеров сексуальных-то! Свят! Свят! Свят!
[Вернись к работе!!! Дух исследователя проснулся!? Ну, как знаешь...]
— Click!
— Ух, ты… Открывается!? Неужели продолб блокировки!
[Смотри, ишь как его распараллелило]
— [thread 0] Как это может быть!? [thread 1] И, да, мне 18… [thread 3] Я, вообще, куда нажал?
[Да, гай, скажу тебе: Не Цезарь ты! Дятель-кнопкожатель! Ты же профессионал! Посмотри на адрес странички!]
— Ой! Чегой-то, где это, куда меня! Кто здесь?
— Я же кликал ссылку красной трубки! WTF$%! (тут это очень цензурозипануто)
— Так, всё… это с лишком… уходим… закрываем… работать…
Ну, вот ещё…
Интернет с лету канул в лета… и тута нету! и нэт не тут! все кОмпы мира разом… в момент накрылись тазом… и только мой последний с чего-то жив! НЕ МОЖЕТ БЫТЬ! КАК МОЖЕТ ЖЕ НЕ БЫТЬ? Ведь мне ж работать надо!
— Думай… Модем!? В роутере… он же там далеко… лень… 192.168.0.1… Ау?.. Вот те на! — Не подключаемся!!!
— Заставил встать таки, зараза, и будь тогда ты «G» три раза…
— Чего его ПО говорит?
— Какой ещё 0 на счете!? Там д.б. 4 моих неразменных рубля — им уже пол-года! [Ага, пунктуальный абонентский плательщик, %% ждешь?]
[Вдруг звук «Блям-Блям»]
— SMS… прям щас в реал тайме и на модем! Вот идиоты… пишут… на модем… кто ж узнает-прочитает… он же в тупой неперепрошитый роутер воткнутый навсегда… ему ж даже блямкнуть нечем.
— Ладно, пока есть возможность прочитаю… чего хоть пишите-то?
(тут бесполезно напрягать цензурозипователь относительно произнесенного мной — рухнет не поднимешь! — попробую как-то передать, ну хотя бы семантику что ли)
Какой xxx сайт… какие 20 руб в день… какие справки по телефону… какое отключить… ну, вы совсем ОХУмутали меня!
[Эй! так всё… тихо… выдохнул… а то ещё люди услышат, подумают, что-то случилось...]
— О! Жена! Иди сюда! Приколись, чем муж себя в профессиональный праздник позабавил… и без Интернета остался…
— Так я и работал… Просто, пошел на Хабр зашел и…
— Да ну, нет! Как ты могла подумать! Хабр — не такой! Там все обсуждения закрытые, чужих нет, только профессионалы… Э-э-э, ладно потом объясню…
— Да, не волнуйся ты… конечно разберусь… да, и сразу работать… да, и вечером свободен.
— Да, звоню, звоню уже… слышишь уже пять минут команды робота выполняю… вот «0» нажимаю.
— Ну, щас, дай до человека доберусь, а то этому бесполезно, как тебе про Хабр…
— Алло! Здравствуйте оператор колцентра опсоса! Помогите, пожалуйста, у меня такая ситуация…
Правда!? И через 15 минут все мои деньги будут на счете и Интернет заработает! Вот, спасибочки! Благодарствую! Вы просто выручили! Если нужно будет что и Вы обращайтесь! Я ведь вашу компанию ещё вот такусенькой помню, когда и зоны охвата-то у вас считай, что не было — все приезжали к вашему офису поговорить по мобильному! Ага! Не-а, какие шутки! Так и было! А без связи-то куда! Да, знаю, сам Бонч закончил. Ага, Интернет! Конечно, безлимитный, ну, тот, у которого лимит в 2 гига, а потом лимит 64 ка. Тик в тик, каждый месяц в клювике! Вы же понимаете, по телефону-то послать можно, но не файл, а работать-то как-то надо! Да, да, и отзыв оставлю. И 5 баллов поставлю. Все сделаю в лучшем виде. До свиданья!

P.S. К чести оператора связи, следует сказать, что не более, чем через 15 минут мои 4 рубля были возвращены на счет, Интернет снова ожил и вечером был свободен, чтоб написать это и объяснить жене, что Хабр это правильный интернет ресурс.
Может, действительно, не всё не так, как кажется…
А, если ключевой вопрос исследования это изучение переносимости программы на уровне исходного кода?
Тогда, можно предположить, как скоро можно ожидать подобное на других платформах…

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность