Продолжаем традицию подробных отчетов о финалах RCC (прошлогодний аналогичный пост — здесь). Итак, 23 сентября 2013 года завершился третий чемпионат по спортивному программированию — Russian Code Cup 2013. Первое место занял Петр Митричев, повторив собственное достижение 2011 года, второе — Геннадий Короткевич, победивший в этом году вместе с командой ИТМО в финале ACM ICPC в Санкт-Петербурге. Третьим стал Дмитрий Джулгаков, уже третий раз участвовавший в финале чемпионата, но впервые завоевавший призовое место.
Mike Mirzayanov @MikeMirzayanov
User
Новая олимпиада по новому языку: открываем регистрацию
2 min
12KКомпания JetBrains открывает регистрацию на Kotlin Challenge — соревнование по программированию для тех, кто хочет попробовать новый язык программирования для платформы Java.
Помните, на конференциях вы слышали доклады по Kotlin? Помните, кто-то из друзей вдохновенно рассказывал о том, что вот-вот появится новая Java от JetBrains? Помните, младшая сестра жаловалась, что никак не освоит Kotlin, потому что нет русской документации? Теперь все изменилось: мы начинаем свою собственную олимпиаду по Kotlin, и даже сделали немного документации по-русски для тех родных заядлых олимпиадников, которые еще не изучили даже технический английский.
Мы приглашаем к участию в Kotlin Challenge всех, кто любит сложные олимпиадные задачи и всех, кто пробует самое свежее в информационных технологиях, чтобы сыграть роль первопроходцев, покоряющих неизведанный край нового языка, сразиться с серьезными соперниками и выиграть почет, славу и призы.
Важно:
+31
Russian Code Cup 2013: разбираем задачи финала
20 min
28K23 сентября 2013 года состоялся финал чемпионата по программированию Russian Code Cup 2013.
Первое место занял Петр Митричев (кстати, чемпион RCC 2011). Второй приз взял Геннадий Короткевич, третье — Дмитрий Джулгаков.
Сегодня мы публикуем подробный разбор шести задач, которые были предложены финалистам RCC (спойлер: одна из них так и осталась нерешенной). В программе — сортировка невиданной быстроты, борьба с капибарным гриппом, путешествия роботов и многое другое.
+50
Russian Code Cup 2013: настраиваемся на хардворкинг!
7 min
7.9K23 сентября этого года лучшие программисты страны сразятся друг с другом в финальном раунде российского чемпионата по спортивному программированию, Russian Code Cup 2013 (RCC). Это будет уже третий финал организованной Mail.Ru Group олимпиады, призванной не только поддержать престиж российских программистов в мире, но и популяризировать программирование как таковое.
В преддверии третьего финала мы решили взять интервью у спикеров RCC 2013 — Дмитрия Склярова, Эдварда Йордона и Кена Голдберга. Но сначала давайте вспомним об основателях языков программирования, благодаря которым сегодняшнее программное обеспечение является именно таким, каким мы его знаем.
+29
Контест «Пятница, 13-ое, День Программиста»
1 min
8.8KПозвольте предложить еще один способ отметить наш профессиональный праздник — поучаствовать в одноименном контесте, который состоится 13 сентября в 19:30 по московскому времени.
Этот контест — очередной из серии Surprise/Unknown Language Round-ов. В таких раундах участники решают задачи только на одном языке программирования, который недоступен в обычных раундах и неизвестен большинству спортивных программистов. Язык объявляется в начале контеста, после чего за два часа нужно его освоить и применить к задачам (относительно простым и не требующим продвинутых алгоритмов). В прошлых раундах фигурировали Tcl, Io, Pike, Befunge, COBOL, Factor и Roco. Я надеюсь, что язык этого раунда станет таким же сюрпризом, каким были все предыдущие.
Правила и обсуждение
Этот контест — очередной из серии Surprise/Unknown Language Round-ов. В таких раундах участники решают задачи только на одном языке программирования, который недоступен в обычных раундах и неизвестен большинству спортивных программистов. Язык объявляется в начале контеста, после чего за два часа нужно его освоить и применить к задачам (относительно простым и не требующим продвинутых алгоритмов). В прошлых раундах фигурировали Tcl, Io, Pike, Befunge, COBOL, Factor и Roco. Я надеюсь, что язык этого раунда станет таким же сюрпризом, каким были все предыдущие.
Правила и обсуждение
+12
Образовательные проекты в ABBYY: что нового?
2 min
6.1KНачало нового учебного года – хороший повод. Так подумал ваш редактор и отправился в отдел, который у нас в ABBYY занимается образовательными проектами – узнать, что интересного произошло в последнее время и что планируется на будущее.
Прежде всего, мне рассказали, что в июле прошёл очередной ABBYY Cup – олимпиада по спортивному программированию, которую мы делаем уже в третий раз. В этом году мы завоевали почти весь мир – только африканским программистам в следующем году стоит выступить более массово :)
Организаторы отмечают более высокий, по сравнению с прошлогодним, уровень конкурсантов – в ABBYY Cup-2013 участвовали звёзды спортивного программирования мировой величины.
Прежде всего, мне рассказали, что в июле прошёл очередной ABBYY Cup – олимпиада по спортивному программированию, которую мы делаем уже в третий раз. В этом году мы завоевали почти весь мир – только африканским программистам в следующем году стоит выступить более массово :)
Организаторы отмечают более высокий, по сравнению с прошлогодним, уровень конкурсантов – в ABBYY Cup-2013 участвовали звёзды спортивного программирования мировой величины.
+15
Разбор всех задач и результаты Яндекс.Алгоритма
17 min
116KБуквально пару часов назад в Санкт-Петербурге завершился открытый чемпионат по программированию Яндекс.Алгоритм 2013. Состязания состояли из нескольких онлайн-раундов по 100 минут, за победу боролись более 3000 программистов из 84 стран. По результатам трёх отборочных раундов в финал вышли 25 лучших.
Финалисты должны были решить шесть алгоритмических задач за 100 минут. Первое место занял недавний победитель ACM ICPC 2013 в составе команды НИУ ИТМО Геннадий Короткевич (tourist), который набрал меньше всего штрафного времени. Второе место досталось выпускнику НИУ ИТМО Евгению Капуну (eatmore). Третье место занял представитель Тайваня Ши Бисюнь.
В подготовке заданий для чемпионата участвовали специалисты из нескольких стран: России, Беларуси, Польши и Японии. Главными составителями задач стали разработчики минского офиса Яндекса (как и все сотрудники компании, к участию в состязаниях они не допускались). Мы попросили всех авторов разобрать задания, которые они подготовили для участников Яндекс.Алгоритма. Кстати, все задачи не удалось решить никому, лучший результат — три решённые задачи — показали только три участника.
Финалисты должны были решить шесть алгоритмических задач за 100 минут. Первое место занял недавний победитель ACM ICPC 2013 в составе команды НИУ ИТМО Геннадий Короткевич (tourist), который набрал меньше всего штрафного времени. Второе место досталось выпускнику НИУ ИТМО Евгению Капуну (eatmore). Третье место занял представитель Тайваня Ши Бисюнь.
В подготовке заданий для чемпионата участвовали специалисты из нескольких стран: России, Беларуси, Польши и Японии. Главными составителями задач стали разработчики минского офиса Яндекса (как и все сотрудники компании, к участию в состязаниях они не допускались). Мы попросили всех авторов разобрать задания, которые они подготовили для участников Яндекс.Алгоритма. Кстати, все задачи не удалось решить никому, лучший результат — три решённые задачи — показали только три участника.
+71
3070 часов хак-квеста, отчёт и рассказы участников
7 min
20KУчастники одного из оффлайновых хакерских турниров Cyber Readiness Challenge
В пятницу закончилась онлайн-игра хак-квеста Cyber Readiness Challenge, которую проводили Symantec и КРОК.
Частенько встречаются хакквесты, которые делают люди, далекие от профессионального инфобеза. Такие квесты можно узнать по заданиям на угадайку: для прохождения требуются не столько скиллы, сколько везение и угадывание что имел в виду автор. А здесь, похоже, получилась очень редкая вещь: соревнование делали люди, шарящие в инфобезе, но при этом далекие от мира CTF. В результате таски получились с одной стороны наивными, но в то же время технически правильными. В одном соревновании сошлись задания вида «Просканируйте сетку. Сколько у нас машин в сети?» и хардкорчик вроде «Расшифруйте заксоренный блок base64, мультибайтовый xor-ключ неизвестен».Влад «vos» Росков
Участники подключались к симулятору, моделирующему сеть крупной корпорации EDC. По сценарию в системе безопасности EDC произошло несколько инцидентов. Компания нанимает разобраться в случившемся лучших экспертов в области информационной безопасности, чтобы доказать или опровергнуть возможность взлома.
В целом на игру ушло около 3070 часов (общее время, затраченное участниками). Всего в турнире залогинилось 143 игрока из разных регионов России, из которых активно участвовало примерно две трети.
+21
Разбор задач финала чемпионата мира про программированию ACM ICPC 2013
25 min
122KНа прошедшем неделю назад чемпионате мира по командному программированию ACM ICPC 2013 было 11 задач, одну из которых за отведённое время не смогла решить правильно ни одна из команд.
Но кроме команд есть и другие люди, которые профессионально решают задачи, — аналитики чемпионата. В течение трансляции они разбиваются на группы, распределяют задачи и потом рассказывают о них в студии. Множество зрителей следят за эфиром, пока эти ребята не разберут самую последнюю задачу. Кроме того, аналитики подсказывают ведущему, что происходит «на поле», высматривают интересные куски кода, следят за картинкой с веб-камер участников.
В этом году на ACM ICPC был 21 аналитик из Швеции, Нидерландов, США, Словакии, Беларуси и России. И 10 из них были из Яндекса. Все они в разные годы были призёрами ICPC. Специально для Хабра они разобрали все задания чемпионата.
Но кроме команд есть и другие люди, которые профессионально решают задачи, — аналитики чемпионата. В течение трансляции они разбиваются на группы, распределяют задачи и потом рассказывают о них в студии. Множество зрителей следят за эфиром, пока эти ребята не разберут самую последнюю задачу. Кроме того, аналитики подсказывают ведущему, что происходит «на поле», высматривают интересные куски кода, следят за картинкой с веб-камер участников.
В этом году на ACM ICPC был 21 аналитик из Швеции, Нидерландов, США, Словакии, Беларуси и России. И 10 из них были из Яндекса. Все они в разные годы были призёрами ICPC. Специально для Хабра они разобрали все задания чемпионата.
+107
Вконтакте iOS SDK v2
10 min
23KДобрый вечер!
Всё началось с того, что необходим был более или менее удобный инструмент для работы с API социальной сети ВКонтакте под iOS. Однако Google меня достаточно быстро расстроил результатами поиска:
Вроде бы всё хорошо, самое главное есть, но вот использование не вызывает приятных ощущений.
Под катом я расскажу, как работает обновленная версия ВКонтакте iOS SDK v2, с чего всё начиналось и к чему в итоге пришли.
Всё началось с того, что необходим был более или менее удобный инструмент для работы с API социальной сети ВКонтакте под iOS. Однако Google меня достаточно быстро расстроил результатами поиска:
- StonewHawk — GitHub
- maiorov/VKAPI — GitHub
- AndrewShmig/Vkontakte-iOS-SDK (да-да, с первой версией было не всё так хорошо, как могло показаться с первого взгляда)
Вроде бы всё хорошо, самое главное есть, но вот использование не вызывает приятных ощущений.
Под катом я расскажу, как работает обновленная версия ВКонтакте iOS SDK v2, с чего всё начиналось и к чему в итоге пришли.
+15
Yaxy — proxy-сервер для веб-разработчика
4 min
35KYaxy — proxy-сервер, подменяющий различные части HTTP-запросов и ответов на указанные в config-файле значения. Я не буду здесь описывать, как поставить, настроить и запустить сервер, это всё описано в readme репозитория. Здесь я опишу различные случаи, в которых Yaxy очень помогает, а то и вовсе незаменим.
+128
Разработка web API
9 min
287KTranslation
Интро
Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.
В тексте попадаются комментарии переводчика, они выделены курсивом.
Собираем API-интерфейсы, которые понравятся другим разработчикам
Понятные URL для вызовов API
Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.
Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
/dogs для работы со списком собак
/dogs/12345 для работы с отдельной собакой
+213
Отчёт со Всероссийского Открытого Чемпионата по программированию
4 min
37KПервый день: как видите, многие финалисты со своими ноутбуками
В эту пятницу закончился Всероссийский Открытый Чемпионат по программированию, где нужно сначала решать задачи, а потом «взламывать» решения других участников.
Кто и откуда приехал?
Участвовало 3500 программистов со всей России, из стран СНГ и совсем немного — из других стран. К первому туру было отобрано 2000 участников, ко второму — 400, а в финал в Москве вышло 50 человек. Уровень в этом году был явно выше чем в прошлом: либо сказались тренировки и то, что турнир набирает известность, либо то, что в игру включились гости из других стран. Приезжали участники финалов прошлых лет.
В финал попало 16 москвичей, 14 петербуржцев, по двое жителей Екатеринбурга, Нижнего Новгорода, Саратова, один участник приехал из Новосибирска. Также в финал вышли по трое из Беларуси, Польши, Украины и даже один человек из Японии. По правилам турнира мы оплачивали дорогу всем, кроме жителей Польши и Японии, а проживание оплатили каждому участнику.
+43
Использование разделяемой памяти в Java и off-heap кеширование
6 min
58KНа прошлой неделе состоялся успешный эксперимент по запуску нового решения для download-сервиса. Один достаточно скромный сервер (2 x Intel Xeon E5620, 64 GB RAM) под управлением Java-приложения собственной разработки принял на себя нагрузку восьми Tomcat'ов, обслуживая более 70 тысяч HTTP-запросов в секунду общей пропускной способностью 3000 Mb/s. Таким образом, весь трафик Одноклассников, связанный с пользовательскими смайликами, обрабатывался одним сервером.
Вполне естественно, что высокие нагрузки требовали нестандартных решений. В цикле статей о разработке высоконагруженного сервера на Java я расскажу о проблемах, с которыми нам пришлось столкнуться, и о том, как мы их преодолели. Сегодня речь пойдет о кешировании изображений вне Java Heap и об использовании Shared Memory в Java.
Вполне естественно, что высокие нагрузки требовали нестандартных решений. В цикле статей о разработке высоконагруженного сервера на Java я расскажу о проблемах, с которыми нам пришлось столкнуться, и о том, как мы их преодолели. Сегодня речь пойдет о кешировании изображений вне Java Heap и об использовании Shared Memory в Java.
+63
Пишем плагин для IntelliJ IDEA, добавляем функциональности редактору кода
5 min
30KTutorial
Начиная работать в IntelliJ IDEA, обнаружил отсутствие удобной комбинации клавиш, которой пользуюсь в Eclipse — Ctrl+Alt+Up. По этой комбинации выделенный блок текста или строка, копируется вверх с перемещением курсора в начало скопированного блока.
В Idea есть действие по умолчанию на Ctrl+D, которое копирует блок вниз (Ctrl+Alt+Down в Eclipse), но невозможно добавить аналогичное действие вверх. После гугления был задан вопрос в Q&A, оставшийся без ответа. Заведён issue на jetbrains. Все эти действия не дали ответа, поэтому решено было написать небольшой плагин для Idea.
В Idea есть действие по умолчанию на Ctrl+D, которое копирует блок вниз (Ctrl+Alt+Down в Eclipse), но невозможно добавить аналогичное действие вверх. После гугления был задан вопрос в Q&A, оставшийся без ответа. Заведён issue на jetbrains. Все эти действия не дали ответа, поэтому решено было написать небольшой плагин для Idea.
+37
Как мы организовали уральскую репетицию ACM ICPC WORLD FINALS
4 min
13KДоброго времени суток всем хаброжителям.
В этой статье я расскажу о том, что можно получить, если заразить нескольких студентов-айтишников с Урала крутой идеей о чемпионате международного уровня.
Всё началось жарким летним днём где-то в июле 2012. На кухне местной ИТ-компании сидели несколько студентов и Леонид Волков (тот самый глава избиркома оппозиции и автор демократии 2.0, в прошлом — призер ACM ICPC WORLD FINALS 2001). Случайно речь зашла о спортивном программировании, о его проблемах в Екатеринбурге, о том, что за последние 9 лет команда из Екатеринбурга ни разу не пропускала мировой финал чемпионата (а также о том, полезно ли оно вообще для разработчиков или нет и подобных холиварах, но статья не про то).
В этой статье я расскажу о том, что можно получить, если заразить нескольких студентов-айтишников с Урала крутой идеей о чемпионате международного уровня.
Всё началось жарким летним днём где-то в июле 2012. На кухне местной ИТ-компании сидели несколько студентов и Леонид Волков (тот самый глава избиркома оппозиции и автор демократии 2.0, в прошлом — призер ACM ICPC WORLD FINALS 2001). Случайно речь зашла о спортивном программировании, о его проблемах в Екатеринбурге, о том, что за последние 9 лет команда из Екатеринбурга ни разу не пропускала мировой финал чемпионата (а также о том, полезно ли оно вообще для разработчиков или нет и подобных холиварах, но статья не про то).
+33
Захабренный договор на разработку сайта, дизайна, софта. Версия 1.1
18 min
244KНа сайте немало постов о том, какие условия нужно включать в договор на создание сайтов и программ (краткий список ниже), но нет договора в формате, который можно взять за основу для составления своего договора. Мы изучили условия из постов (спасибо авторам), подумали над ними, переработали и учли в предлагаемой на ваш суд форме договора. Так что договор пока можно считать частично «захабренным».
+136
Олимпиадные задачи по программированию: что за зверь?
5 min
62KНедавно мы анонсировали конкурс задач по спортивному программированию. Организаторы конкурса попросили написать короткое объявление о конкурсе в блог ABBYY, но строгий редактор отказался печатать анонс без объяснения того, что же такое олимпиадная задача. Из этого родилась целая статья. Начнем, пожалуй, с примера олимпиадной задачи.
Первое, что бросается в глаза, это необычное условие. Такой подход сложился исторически: писать краткую математическую формулировку не принято. Обычно ее пытаются связать с реальной жизнью, ну или с не очень реальной. Например, в USACO героями всех задач являются фермер Джон и коровы. Прежде чем приступить к решению после прочтения условия, участнику требуется выделить математическую формулировку задачи.
Этот же пример, чтобы по ссылке не ходить
ограничение по времени на тест: 4 секунды
ограничение по памяти на тест: 256 мегабайт
ввод: standard input
вывод: standard output
В городе N. очень плохо с дорогами, общепитом и IT-инфраструктурой. Всего в городе n перекрестков, некоторые пары которых соединены двусторонними дорогами. Дорожная сеть состоит из n - 1 дороги, по дорогам можно добраться с любого перекрестка на любой другой. Да, вы правы — дорожная сеть образует неориентированное дерево.
Недавно мэр города придумал способ, устраняющий проблемы с общепитом и IT-инфраструктурой, причем одновременно! Решено поставить на перекрестках города ресторанчики двух известных сетей кафе для IT-шников: «iMac D0naldz» и «Burger Bing». Так как владельцы сетей не дружат, категорически запрещается размещать рестораны двух разных сетей на соседних перекрестках. Есть и другие требования. Вот полный список:
Мэр собирается брать неплохой налог с каждого ресторана, поэтому он заинтересован в том, чтобы общее число ресторанов было максимальным.
Помогите мэру проанализировать ситуацию. Найдите все такие пары (a, b), что a ресторанов может принадлежать «iMac D0naldz», b — «Burger Bing», а сумма a + b максимальна.
В первой строке входных данных содержится целое число n (3 ≤ n ≤ 5000) — количество перекрестков в городе. Далее в n - 1 строке перечислены все дороги, по одной дороге в строке. Каждая дорога задана парой чисел xi, yi (1 ≤ xi, yi ≤ n) — номерами соединяемых перекрестков. Считайте, что перекрестки пронумерованы от 1 до n.
Гарантируется, что заданная дорожная сеть представляет собой неориентированное дерево с n вершинами.
В первую строку выведите целое число z — количество искомых пар. Далее выведите все искомые пары (a, b) в порядке увеличения первой компоненты a.
ИТ-рестораны
ограничение по времени на тест: 4 секунды
ограничение по памяти на тест: 256 мегабайт
ввод: standard input
вывод: standard output
В городе N. очень плохо с дорогами, общепитом и IT-инфраструктурой. Всего в городе n перекрестков, некоторые пары которых соединены двусторонними дорогами. Дорожная сеть состоит из n - 1 дороги, по дорогам можно добраться с любого перекрестка на любой другой. Да, вы правы — дорожная сеть образует неориентированное дерево.
Недавно мэр города придумал способ, устраняющий проблемы с общепитом и IT-инфраструктурой, причем одновременно! Решено поставить на перекрестках города ресторанчики двух известных сетей кафе для IT-шников: «iMac D0naldz» и «Burger Bing». Так как владельцы сетей не дружат, категорически запрещается размещать рестораны двух разных сетей на соседних перекрестках. Есть и другие требования. Вот полный список:
- в каждом перекрестке должен находится не более чем один ресторан;
- каждый ресторан принадлежит либо «iMac D0naldz», либо «Burger Bing»;
- каждая сеть должна построить не менее одного ресторана;
- не существует пары перекрестков, которые соединены дорогой и на которых стоят рестораны разных сетей.
Мэр собирается брать неплохой налог с каждого ресторана, поэтому он заинтересован в том, чтобы общее число ресторанов было максимальным.
Помогите мэру проанализировать ситуацию. Найдите все такие пары (a, b), что a ресторанов может принадлежать «iMac D0naldz», b — «Burger Bing», а сумма a + b максимальна.
Входные данные
В первой строке входных данных содержится целое число n (3 ≤ n ≤ 5000) — количество перекрестков в городе. Далее в n - 1 строке перечислены все дороги, по одной дороге в строке. Каждая дорога задана парой чисел xi, yi (1 ≤ xi, yi ≤ n) — номерами соединяемых перекрестков. Считайте, что перекрестки пронумерованы от 1 до n.
Гарантируется, что заданная дорожная сеть представляет собой неориентированное дерево с n вершинами.
Выходные данные
В первую строку выведите целое число z — количество искомых пар. Далее выведите все искомые пары (a, b) в порядке увеличения первой компоненты a.
Примеры тестов
Входные данные
5
1 2
2 3
3 4
4 5
Выходные данные
3
1 3
2 2
3 1
Входные данные
10
1 2
2 3
3 4
5 6
6 7
7 4
8 9
9 10
10 4
Выходные данные
6
1 8
2 7
3 6
6 3
7 2
8 1
5
1 2
2 3
3 4
4 5
Выходные данные
3
1 3
2 2
3 1
Входные данные
10
1 2
2 3
3 4
5 6
6 7
7 4
8 9
9 10
10 4
Выходные данные
6
1 8
2 7
3 6
6 3
7 2
8 1
Первое, что бросается в глаза, это необычное условие. Такой подход сложился исторически: писать краткую математическую формулировку не принято. Обычно ее пытаются связать с реальной жизнью, ну или с не очень реальной. Например, в USACO героями всех задач являются фермер Джон и коровы. Прежде чем приступить к решению после прочтения условия, участнику требуется выделить математическую формулировку задачи.
+24
Russian Code Cup: как это было, как это будет
4 min
10KВ 2013 году Mail.Ru Group организует очередную, третью по счёту, международную олимпиаду для самых сильных программистов – Russian Code Cup 2013. Мы задумывали олимпиаду как способ популяризации программирования, поднятия престижа профессии (и, конечно, как отличный повод измерить свою скорость мысли на интеллектуальной гоночной трассе).
+33
Автономная кроссплатформенная монолитная программа на Java
21 min
62KЯ люблю desktop-приложения. Признаваться в этом нынче, похоже, стыднее, чем в связях с иностранной разведкой, но это так. Нет, это не значит, что я не люблю интернет-технологии. Более того, некоторые я не только уважаю, а даже более-менее знаю. Но, тем не менее, я скучаю по тем временам, когда программа писалась на одном компьютере, потом компилировалась и запускалась на других, разных компьютерах. Тогда везде (почти) была одна система — Windows с одной и той же API, почти не было проблем совместимости на уровне приложений, никто не материл разработчиков браузеров — все берегли нервы на разработчиков WinAPI, которые умудрялись создавать конфликты даже внутри нее одной. Но это я, конечно, иронизирую, а если серьезно — иногда и сейчас хочется написать просто desktop-приложение, да так, чтобы работало оно на всех популярных системах. Трудно? Если подумать и покопать, то не очень.
Еще я люблю языки высокого уровня с аккуратной архитектурой и строгой типизацией. Мои фавориты — Java и C#. Оба они предоставляют разработчику множество преимуществ по сравнению с C++, оба избавляют от ряда забот. Чем приходится платить? Тем, что таскаешь за собой тяжелую колоду, которая называется Oracle JVM, .NET или mono. Все три колоды весят сотни мегабайт и лицензию имеют такую, что каждый пользователь вынужден качать эту штуку сам, не путая при этом разрядность своего компьютера, а главное — программа на Java не может быть совместима со всеми версиями JVM разом, не так ли? И вот — мы приходим к тому, что просто скинуть программку другу (или миллиону друзей) и не заботиться о том, что она у него не запустится, не выходит. Приходится делать хитрые сетапы, вбивать костыли, и это я еще не упомянул .NET — однажды я видел у друга сразу 3 установленных версии, причем все три были нужны разным приложениям…
Стоп! А давайте напишем программу на Java, но так, чтобы она не требовала установки на машину какой-либо JVM, чтобы одним касанием собиралась под Windows, Linux и OS X и чтобы при этом занимала совсем чуть-чуть; так, чтобы никто даже не понял, что она написана, скажем, не на C. Невозможно? Совсем наоборот! (И нет, я имею в виду не gcj, который лишает Java всех ее прелестей. Рефлексия будет работать и даже сторонние jar вы сможете запускать).
Еще я люблю языки высокого уровня с аккуратной архитектурой и строгой типизацией. Мои фавориты — Java и C#. Оба они предоставляют разработчику множество преимуществ по сравнению с C++, оба избавляют от ряда забот. Чем приходится платить? Тем, что таскаешь за собой тяжелую колоду, которая называется Oracle JVM, .NET или mono. Все три колоды весят сотни мегабайт и лицензию имеют такую, что каждый пользователь вынужден качать эту штуку сам, не путая при этом разрядность своего компьютера, а главное — программа на Java не может быть совместима со всеми версиями JVM разом, не так ли? И вот — мы приходим к тому, что просто скинуть программку другу (или миллиону друзей) и не заботиться о том, что она у него не запустится, не выходит. Приходится делать хитрые сетапы, вбивать костыли, и это я еще не упомянул .NET — однажды я видел у друга сразу 3 установленных версии, причем все три были нужны разным приложениям…
Стоп! А давайте напишем программу на Java, но так, чтобы она не требовала установки на машину какой-либо JVM, чтобы одним касанием собиралась под Windows, Linux и OS X и чтобы при этом занимала совсем чуть-чуть; так, чтобы никто даже не понял, что она написана, скажем, не на C. Невозможно? Совсем наоборот! (И нет, я имею в виду не gcj, который лишает Java всех ее прелестей. Рефлексия будет работать и даже сторонние jar вы сможете запускать).
+136
Information
- Rating
- Does not participate
- Location
- Саратов, Саратовская обл., Россия
- Registered
- Activity