Как стать автором
Поиск
Написать публикацию
Обновить
1140.22

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Компиляция. 4: игрушечный ЯП

Время на прочтение18 мин
Количество просмотров21K
С грамматиками калькуляторов поиграли достаточно, переходим к языкам программирования. Бета-тестеры статьи подали идею писать JavaScript-подобный язык: начнём с простейшего скобчатого скелета, и будем его постепенно обращивать наворотами — синтаксическим сахаром, типами данных, поддержкой функций, и т.д.

Чтобы неполноценность нашего языка была понятна уже из названия, назовём его JSkrip.

Далее в посте


  1. Синтаксис
  2. Грамматика
  3. Парсер
  4. Синтаксическое дерево
  5. Pretty-printing

Читать дальше →

Компиляция. 3: бизон

Время на прочтение13 мин
Количество просмотров50K
Это единственный пост в серии, в центре внимания которого — старообрядный сишный бизон, так надоевший некоторым. Тем, кто пишет не на Си, пост всё равно должен быть интересен, потому что похожие по принципу работы генераторы LR-парсеров существуют для очень многих языков. Тех же, кто идеологически не приемлет LR-парсеры, мне сегодня привлечь нечем.

Далее в посте:

  1. Компиляция грамматики
  2. Двухступенчатый парсер
  3. Что у него внутри?
  4. Конфликты в грамматике
  5. Как это работает?
Читать дальше →

Компиляция. 2: грамматики

Время на прочтение11 мин
Количество просмотров42K
В предыдущем посте было много кода и, по некоторым мнениям, недостаточно объяснений. Будем чередовать: в этот раз будет много теории, а до практики почти не дойдёт.

Далее в посте:

  1. Магазинный автомат
  2. Формальные грамматики
  3. LR-парсинг
Читать дальше →

Компиляция. 1: лексер

Время на прочтение7 мин
Количество просмотров95K
Меня всегда завораживало таинство рождения программой программы. К сожалению, российские вузы уделяют мало внимания сей интереснейшей теме. Рассчитываю написать серию постов, в которых поэтапно создадим маленький работоспособный компилятор.

Первые посты серии уже подготовлены, и бета-тестировались в одном маленьком и наглухо закрытом сообществе. Тем не менее, я буду продолжать их править с учётом пожеланий почтенной хабрапублики.

Далее в посте:

  1. С какой стати писать компиляторы?
  2. Общий план
  3. Анализ текста
  4. Практический пример
  5. Как это работает?
Читать дальше →

Новая волна языков программирования

Время на прочтение2 мин
Количество просмотров8.3K
На конференции OSCON (19-23 июля, Портленд) в этом году решили организовать дополнительную секцию Emerging Languages Camp, посвящённую языкам программирования нового поколения. Организатор — Алекс Пейн, известный по своей работе в компании Twitter.

Новые языки появляются постоянно и в бесчисленном количестве, потому что в программировании всё время возникают новые задачи, с которыми старые языки справляются плохо. Алекс Пейн говорит, что главная фундаментальная проблема сейчас — параллелизм. Он добавляет к этому ясность выражений (expressability) и удобство сопровождения (maintainability).
Читать дальше →

История ИТ моими глазами

Время на прочтение4 мин
Количество просмотров3.4K

Начиная разработчиком на тогда еще сверх продвинутом IDE от компании Borland, bc++ 3.11, работающая в операционной системе DOS, в которой тогда единственное, чего не хватало — так это поддержки dos4gw (который вышел, если мне не изменяет память, парой годами позже), я любил эту IDE и мне казалось, что на ней можно сделать все что угодно. Была куча драйверов, которые писались энтузиастами, меняющие шрифты консоли, кодировку, была целая система работы с памятью… Прорывом были отгружаемые динамически библиотеки на диск, созданные чтобы вмесить все в память. Сегменты (ну, современные программисты, что такое сегменты оперативной памяти, и откуда 640К?), нижняя память, верхняя память… 640 килобайт… Люди придумывали все новые задачи компьютерам, а гении своего дела эти компьютеры придумывали. И ведь на самом-то деле это не так давно было… Это было почти вчера.
Читать дальше →

30 лет программирования в лицах

Время на прочтение5 мин
Количество просмотров2.2K
Статья без начала, в которой автор рассказывает о невыносимых типажах людей, с которыми он работал за последние 30 лет, с эпилогом переводчика

Я закончил колледж 30 лет назад. Моей первой работой была разработка испытательной аппаратуры для Univac. Это были бы замечательные времена, если бы не…

Грег Скрытный


Здесь я впервые столкнулся с человеком, который считал, что не помогать другим и не отвечать на вопросы — это некая форма гарантии занятости — его занятости.

Однажды я рассказал в общих чертах о проекте, которым я собирался заняться. Грег внимательно выслушал и сказал то же, что и обычно: ничего. Я провозился с реализацией неделю или две, пока не обнаружил, что мой подход в корне неверен. Я спросил об этом Грега, и он ответил, что для него это было очевидно с первого взгляда. Знаете, он ничего не сказал мне! Будь я его боссом, я бы его уволил.

Читать дальше →

Подход к Online Analysis Processing

Время на прочтение5 мин
Количество просмотров3.9K
По следам этого поста.

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

Постановка задачи и решение

О том, как не надо отдавать исходники

Время на прочтение1 мин
Количество просмотров1.1K


Вот такая красота на javascript нашлась при пристальном изучении исходных текстов xen cloud platform: pastebin.com/FyN3pSh5

Может, ассемблер всё-таки лучше?

Я понимаю, что кому-то не хочется показывать свой исходный текст, но это настоящее издевательство…

10 вещей, которые никогда не преподаются программистам в вузах

Время на прочтение2 мин
Количество просмотров9.8K
10 вещей, которые никогда не преподаются программистам в вузах.

1. Мы не правы


Программисты зачастую имеют большое эго. Поэтому часто бывает трудно осознать, что мы не правы в чем-то. Я видел много споров относительно архитектуры проектов, где разработчики расхваливают свои идеи. Но, предположим, что мы все неправы. И отличаемся только в степени своих заблуждений.
Очень важно осознать и принять этот факт только один раз и мы будем открыты, чтобы выслушать других и использовать свои идеи, чтобы создать лучшее решение.

далее

«The Simdsons» — финал

Время на прочтение5 мин
Количество просмотров9.3K
image
Знаете ли вы, что Гомер Симпсон, глава семейства «The Simpsons», когда-то действительно официально работал на компанию Интел, причем довольно успешно? А именно, он рекламировал пончики процессор Pentium II. Посмотреть, как это было, можно здесь.
Ну а под катом можно посмотреть завершение предыдущего поста с 21 любопытными фактами про Intel SIMD.

Читать дальше →

Правильный инструмент

Время на прочтение1 мин
Количество просмотров1.4K
Некоторое время назад я натолкнулся на сайт "TheRightTool" — эдакий рейтинг языков программирования на соответствие разным утверждениям, например: «На этом языке легко писать эффективный код». Сразу понятно, что такой рейтинг очень полезен (хотя интерфейс у них — беда — на третьем вопросе мне надоело переставлять языки).

Я попытался на своем блоге дать ссылки на автоперевод, но понятное дело, что он оставляет желать лучшего. Но ведь русские (вполне возможно) больше всех знают о языках программирования! А больше всего программистов на Хабре.

Итак, сегодня в течение часиков пяти мне было заняться нечем, так что, дорогой Хабр, встречай русский аналог (на слабеньком VPS, так что рано или поздно сдохнет под Хабраэффектом — извиняйте, ставьте закладку, заходите завтра):



Надеюсь скоро мы, коллективным 4-хлетним Хабраразумом, узнаем — какие языки для чего можно использовать.

Читать дальше →

Как меняются взгляды

Время на прочтение1 мин
Количество просмотров523
Программист, опыт работы 1 год:
— Нет такой технологии, которую я бы не смог освоить!

Программист, опыт работы 10 лет:
— Нет такой технологии, без которой я бы не смог обойтись…

Ближайшие события

«The Simdsons» — немного о семействе векторных инструкций SIMD

Время на прочтение4 мин
Количество просмотров14K
image
Когда я впервые увидела этот мультфильм, то абсолютно не впечатлилась. Какие-то желтые (хорошо хоть не зеленые) человечки с выпученными глазами, сюжет не особенно интересный, шутки несмешные…

Но вскоре все радикально изменилось. Нет, «Симпсоны» остались теми же, зато я провела около месяца в командировке в мир Симпсонов — США, где наконец поняла, почему этот сериал многие считают лучшим. «The Simpsons» — действительно прекрасная пародия на американский образ жизни от мелочей до глобальных вопросов, это и юмор и философия и еще много отличных поводов для просмотра.

К чему это я? А к тому, что наверняка первое знакомство с семейством векторных инструкций SIMD (и, в частности, SSE) многих программистов не впечатлило. Какие-то новые инструкции с выпученными длинными регистрами, одновременно работающие над группой данных, возни много, а толку, скорее всего, мало…

Попробую радикально изменить это представление. Нет, я не буду убеждать вас, что SSE — прекрасное средство оптимизации приложений. Пойду другим путем. В Симпсонах — 21 сезон (кстати, это — самый длинный сериал в истории американского ТВ). В честь этого я приведу 21 интересный факт про Intel SIMD. Надеюсь, что действительно интересный — даже знатокам SIMD.
Читать дальше →

Трудности перевода: когда 2*2=5

Время на прочтение1 мин
Количество просмотров1.4K
Представьте себе: ваш племянник спрашивает у вас, сколько будет 2*2+1. Вам не до того, и вы переадресовываете вопрос своему интерпретатору, который честно отвечает: 6. Внимание, вопрос: благодаря какому языку программирования ваш племянник завтра получит двойку?
Читать дальше →

Какой язык учить?

Время на прочтение1 мин
Количество просмотров2.5K
Хочешь программировать на выразительном и мощном языке: Python
Нужно по-быстрому веб-сайт: PHP
Желаешь в тусовку зовущих себя «рок-звездами» программирования: Ruby
Реально нужно научиться программировать: C
Ищешь просветления: Scheme
Уйти в хандру: SQL
Потерять одну хромосому: Microsoft Visual Basic
Для получения постоянной, заурядной, но хорошо оплачиваемой работы по созданию финансовых приложений в офисной загородке под лампами дневного света: Java
Тоже самое, но с аббревиатурами и списком сертификатов в своей подписи: C#
Получить волшебное ощущение детского изумления, которое сложно отличить от мании величия: Objective C

оригинал (en)

Жемчужины функционального программирования: рисуем деревья

Время на прочтение15 мин
Количество просмотров5.3K
В этой статье я собираюсь поведать читателям о рисовании деревьев. Нет, не тех деревьев, которые растут из почвы и в которых селятся белки. Сегодня мы будем визуализировать деревья как структуры данных. Данная статья написана по мотивам статьи Andrew Kennedy «Functional Pearls: Drawing Trees» из журнала Journal of Functional Programming, 6(3): 527-534, Cambridge University Press, May 1996 (электронная версия статьи тут), и является, в некотором роде, её переводом.
Читать дальше →

Немного о libunique

Время на прочтение3 мин
Количество просмотров1.5K
Сегодня я хотел бы рассказать об одном из способов создания приложения, имеющего один экземпляр — библиотека LibUnique.
Читать дальше →

Привет из свободного от libc мира! (Часть 1)

Время на прочтение5 мин
Количество просмотров30K
В качестве упражнения я хочу написать программу на С. Достаточно простую для того, чтобы дизассемблировать ее и объяснить весь код самой себе.

Звучит несложно, правильно?

У читателя предполагается наличие опыта компиляции программ и работы в Линуксе. Небольшое умение читать ассемблерный код тоже пригодится.
Читать дальше →

Вклад авторов