• Как начать писать код на Lisp?

    • Tutorial

    Часто приходится видеть, как новички пробуют Common Lisp и потом жалуются, что с ним невозможно нормально работать. Как правило, это происходит из-за того, что они не понимают как настроить себе процесс, обеспечивающий тот самый "быстрый отклик" от среды разработки, когда ты поменял функцию, скомпилировал её и изменения тут же начали использоваться внутри уже "бегущей" прогрммы без её перезапуска.


    Понять, как это выглядит, можно посмотрев какой-нибудь ролик на youtube, где демонстрируется интерактивная разработка на Common Lisp.


    Читать дальше →
  • Редактор TECO: EMACS, я твой отец

      Впервые про TECO я прочитал в пародийной статье Real Programmers Don't Use Pascal, написанной незадолго до моего рождения. Там было написано, что настоящие программисты не используют новомодные редакторы EMACS и VI:


      Нет, Настоящий Программист хочет редактор вида «Просил? Так получай!» — сложный, загадочный, мощный, не прощающий ошибок, опасный. TECO, если быть точным.
      Оригинал
      No, the Real Programmer wants a `you asked for it, you got it' text editor — complicated, cryptic, powerful, unforgiving, dangerous. TECO, to be precise.

      Это меня заинтриговало. Что за зверь такой, можно ли его пощупать? Википедия рассказала, что TECO — это Text Editor & COrrector, создан он в 1962-м году в DEC и использовался на компьютерах семейства PDP, а позже на системах OpenVMS. Оказалось, что существует порт на Си, который поддерживается энтузиастами в актуальном состоянии и собирается под современными операционными системами. Вот я и решил почувствовать себя настоящим программистом хотя бы немножко.


      Читать дальше →
      • +52
      • 9,5k
      • 9
    • Производительность консолей и оболочек

      • Перевод
      Есть хорошее демо MSR от 2012 года, которое показывает эффект времени отклика при работе на планшете. Если не хотите смотреть три минуты видео, они по сути создали устройство, которое симулирует произвольные задержки вплоть до доли миллисекунды. Задержка 100 мс (0,1 секунды), типичная для современных планшетов, выглядит ужасно. На 10 мс (0,01 секунды) задержка заметна, но уже можно нормально работать, а при задержке менее 1 мс всё просто идеально — как будто вы пишете карандашом по бумаге. Если хотите проверить это самостоятельно, возьмите любой Android-планшет со стилусом и сравните с нынешним поколением iPad Pro со стилусом Apple. У устройства Apple время отклика намного больше 10 мс, но разница всё равно кардинальная — она такая, что я реально использую новые iPad Pro для записи заметок и рисования диаграмм, в то время как Android-планшеты считаю совершенно неприемлемыми в качестве замены карандашу и бумаге.

      Что-то похожее вы увидите в шлемах VR с разными задержками. 20 мс выглядит нормально, 50 мс лагает, а 150 мс уже непереносимо.

      Странно, но редко приходится слышать жалобы на задержку ввода с клавиатуры или мыши. Казалось бы, причиной может быть то, что ввод с клавиатуры и мыши очень быстрый — и происходит практически мгновенно. Часто мне говорят, что так оно и есть, но я думаю, что ситуация совершенно обратная. Идея того, что компьютеры быстро реагируют на ввод данных — настолько быстро, что человек не замечает разницы — самое распространённое заблуждение, которое мне приходилось слышать от профессиональных программистов.
      Читать дальше →
      • +13
      • 11,1k
      • 3
    • Emacs + удобный менеджер окон и буферов

      Привет, хабражители!

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

      Но, не хватало мне очень хорошего и удобного менеджера буферов, я начал искать и нашел emacs-purpose.

      Это очень удобная система построения своей конфигурации буферов и их расположения на странице. Что интересно, что она подразумевает что у каждого буфера есть предназначение и соответственно целевое место в твоем layoutе. На основании этого extensionа даже возможно сделать свой собственный ide в emacs очень легко. Итак, давайте рассмотрим несколько шагов по построению своей версии IDE используя этот движок.

      Для затравки, вот то как выглядит мой интерфейс емакса.

      image
      Читать дальше →
    • Альтернатива Emacs Lisp'у

      image


      Вы когда-нибудь искали альтернативу Emacs Lisp'у? Давайте попробуем добавить в Emacs ещё один язык программирования.


      В этой статье:


      • Потенциальные преимущества, которые будут получены при возможности расширять Emacs на Go;
      • Определим способы взаимодействия Go и Emacs Lisp;
      • Затронем некоторые детали реализации описанного транскомпилятора;

      Статья может заинтересовать пользователей Emacs'а, а также тех, кому небезразличны все эти бесчисленные реализации бесчисленных языков программирования.


      В самом конце статьи представлена ссылка на work in progress проект, который позволяет конвертировать Go в Emacs Lisp.

      Читать дальше →
    • Как делать больше, уставая меньше. Emacs pomidor

        Вступление


        С возрастом моя работоспособность не становится выше. Теперь я не могу сидеть по 6 часов не вставая: спина, шея, глаза — все это начинает рано или поздно болеть.


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

        Читать дальше →
      • Файловая система, дешево и быстро

          Разработчикам часто приходится иметь дело с файлами, представляющими из себя древовидную структуру: XML, JSON, YAML, всякого рода языки разметки вроде Markdown или Org-mode. Облегчая в общем и целом нашу жизнь, такие файлы имеют склонность к бесконтрольному росту, в какой-то момент из решения превращаясь в проблему.


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


          Но существует и альтернатива, о которой — ниже.

          Читать дальше →
        • Текстовые редакторы vs IDE

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

          Итак, какие цели статьи?
          1. Что же лучше для программирования: текстовый редактор или IDE
          2. Vim и Emacs — не текстовые редакторы
          Читать дальше →
        • Emacs как редактор кода для Python и Golang

          • Tutorial

          image


          Введение


          Когда полгода назад я решил перейти с Vim на Emacs сначала я решил поискать статьи по настройке последнего на хабре. К моему удивлению нашлась всего одна статья в которой рассказывали, как настроить данный редактор для работы с Python. У меня было 2 года опыта работы с vim и имелись определенные требования, которые не были затронуты в данной статье. Вообще рускоязычных статей про работу в Emacs над Python очень мало на просторах интернета. Я не буду рассказывать про тонкости настройки самого Emacs, для этого не хватит даже отдельной статьи.


          Сразу хочу предупредить любителей холивара Emacs vs Vim, а также Emacs/Vim vs IDE — я не хочу разводить бесполезные споры на эти темы. После долгих поисков я нашел редактор, который устраивает меня всем и который можно настроить как душе угодно. Я просто хочу поделится своими конфигами, а также надеюсь увидеть альтернативные решения в комментариях, чтобы продолжать настраивать данный инструмент под себя.

          Читать дальше →
        • El-get, ELPA, MELPA и автоустановка пакетов

          • Tutorial
          В статье приводчится часть конфига .emacs, позволяющая при запуске автоматически проверить наличие и при неоходимости установить отсутствующие пакеты с помощью el-get и packages. Полезно, если Вы используете EMACS на разных компьютерах либо делитесь своим конфигом с другими людьми.
          Читать дальше →
        • Макросы в Emacs'е: формируем отряды для обработки



            Не забывай свои корни, помни, есть вещи на порядок выше…
            Каста здесь


            История из жизни



            Многие начинали свою компьютерную жизнь с игр. Кто не начинал, тот играет в шахматы на деревянной доске, как какой-нибудь президент. Я не играю в шахматы, я играю в Starcraft и другие подобные игры. Когда-то я играл многими часами, но время прошло и игры перешли в серьёзные занятия, дающие какой-то результат. В то же время хоть игры и переродились, но привычки остались старые. Иногда хочется поиграть.

            Чего нет в шахматах? В шахматах нет живых патрулей, отрядов, минных полей в самых излюбленных местах и много чего ещё, чего так порой не хватает, в то время как ты перекомпилируешь какую-нибудь программу, редактируя её. Ностальгия захватывает и мы медленно начинаем искать что-нибудь подобное в программном окружении. И находим!

            Сегодня мы поговорим о весёлых макросах.

            Давай поговорим
            • +11
            • 6,7k
            • 9
          • Emacs таинственный: Путешествие в калькулятор



              Ничто так не скрыто от нас, как то, что лежит на поверхности.
              Сунь Цзы и Чжугэ Лян (вольный перевод)


              Предисловие



              Случилось сие в одном из роликов на YouTube. При просмотре программистского урока нужно было срочно перевести 377 в десятичную систему. Мы не стали раскладывать это на тройки бит, представлять степени восьмёрки или просто не обращать на это внимание и пропустить этот неважный момент. Мы запустили калькулятор в операционной системе, пододвинули его окно к центру экрана и там всё выяснили. Да, это оно — число 255.

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

              Первый контакт



              Как и следовало ожидать, при использовании Emacs на протяжении месяцев или просто многих лет наступает Emacs головного мозга. Поэтому такие случаи не проходят даром и среди ночи в голове возникает вопрос: «Как же всё-таки в Emacs'е перевести 377? Он хотя бы это умеет? Ну, хотя бы 8 возведёт в степень?».

              Наутро, зарядившись энергией в виде чая с горстью шоколадных конфет, мы открываем Emacs и начинаем его исследование.

              Перевод из одной системы в другую
            • Покорение Emacs-режимов: руководство для самоделкина



              Программисты делятся на две категории:
              1) Те, кто уже использует Vim.
              2) Те, кто уже использует Emacs.
              3) Те, кто ещё не использует.


              Предисловие


              Как-то пришла идея поставить Emacs во второй раз, чтобы ещё раз убедиться, что это какой-то неправильный редактор с кучей разных игр, но никак не функций для работы с текстом. Так и остался на нём.

              Добавление режима


              В Emacs'е есть множество разных режимов, добавляющих функциональность в него. Как правило, когда нужна какая-то фича, она скачивается в виде пакета, состоящего из файлов .el (Emacs Lisp), и они уже подключаются к встроенным .el файлам, отвечающим за загрузку редактора.

              Сначала это всё удобно использовать, но потом начинает чего-то не хватать и приходится думать о добавлении своей функциональности.
              Построение
            • ECFG: сажаем ~/.emacs на диету

                Друзья, сегодня я хочу поделиться с вами реализацией идеи по созданию модульной, переносимой и масштабируемой конфигурации для вашего любимого текстового редактора, опробованную в деле за многие месяцы на самых различных сочетаниях железа и ПО: Emacs Config.

                image
                Читать дальше →
              • Emacs: дрессируем курсор (продолжение)

                  Не бойтесь совершенства. Вам его не достичь!
                                                             Сальвадор Дали


                  Взгляв в прошлое


                  В предыдущей статье, речь шла о том, как можно заставить курсор Emacs сохранять позицию в строке (столбец), при переходе к более короткой строке (грубо говоря — избавиться от «прыжков» курсора). Предложенное решение пожалуй обладало единственным достоинством — предельной простотой кода. Напомню, что для позиционирования курсора просто использовались дополнительные (лишние) пробелы.

                  Более основательное знакомство с Emacs Lisp и общение с откликнувшимися сведущими людьми (respect2: Иван Алексеев aka Yurii Sapfot) укрепило в мысли, что более правильное решение следует искать в направлении оверлеев. Так появилась версия №2 которую я и предлагаю уважаемым читателям.

                  Читать дальше →
                • Навигация в крупных проектах для Vim и Emacs

                    Из публикаций о Vim и Emacs складывается впечатление, что мало кто использует в них человеческую навигацию по коду. Или же используют вместо нее инструменты вроде ack и ag. А между тем для навигации в этих редакторах есть эффективные инструменты, которые существуют уже не одно десятилетие. Эти инструменты Ctags и Gnu global — они представлены во всех основных серверных Linux-дистрибутивах, так что навигация будет работать даже если разработка ведется на удаленном сервере.

                    Я буду писать большей частью про Emacs, потому что пользуюсь им, но буду давать ссылки на соответствующие плагины для Vim. Главное донести принцип работы и основные возможности инструментов и отговорить вас от неумеренного использования ack, ag и grep.

                    Читать дальше →
                  • Emacs: дрессируем курсор

                    К чему эти прыжки?
                                     Остап Бендер

                    Вступление


                    Вообще-то я хотел написать небольшую заметку «о некоторых особенностях работы с макросами в Clojure». Но попутно решил наконец более основательно ознакомиться с Emacs.

                    Я конечно не совсем ровестник Lisp, однако знакомы мы вот уже… дцать лет и потенциал этого замечательного языка (даже скорее философии) вполне себе представляю и в теории и на практике. Было дело писал и свои реализации (скорее для лучшего понимания механизмов работы интерпретатора Lisp нежели для практического использования). Однако, Emacs практически не использовал т.к. в стародавние времена достаточно плотной работы с Lisp вполне обходился встроенным редактором моей версии (muLisp, редактор конечно же тоже был написан на нём самом). Потом приходилось работать с «более другими» инструментами, а последние годы и вовсе в иной сфере. Сейчас вот появилось немного времени «для души»…

                    Собственно «погружение» в Emacs прошло вполне комфортно — хотя я (почему-то всё ещё) и не юниксоид, но к консольным командам и вообще работе с клавиатурой отношусь с пониманием. Настройка управления и джентльменского набора «плагинов» также не вызвала проблем. С прикручиванием SBCL, Clojure и Scala пришлось немного повозиться, но всему виной было несоответствие версий и/или их (версий) врождённые проблемы.

                    Однако синдром «прыгающего курсора» (перемещение к концу строки при переходе к следующей/предыдущей строке в случае, если она короче текущей) вызывает лёгкую идиосинкразию. Если бы дело шло не о Emacs, то скорее всего пришлось бы смириться и искать «концептуальность» в таком подходе, как это часто делается при невозможности решения проблем. Но, поскольку мы имеем дело с конструктором редакторов, то проблема была трактована как вызов (как сейчас стало модно говорить).
                    Читать дальше →
                    • +13
                    • 6,7k
                    • 3
                  • Редактор или IDE? Очередная попытка анализа

                      Хотелось бы в очередной раз поднять эту довольно спорную тему.

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

                      В статье я постараюсь исправить это упущение и расставить ещё немного точек над «ё».

                      Приглашаю всех поучавствовать в поисках идеального инструмента.
                      Читать дальше →
                    • Common Lisp IDE


                        Доброго времени суток, уважаемый читатель!
                        Перед каждым новичком в мире языка программирования Common Lisp
                        возникает проблема выбора среды разработки — Integrated Development Environment (далее, IDE).

                        Существует большое количество IDE для Common Lisp. Перечислим некоторые, самые распространенные, из них:

                        Для Знатоков
                        Знатоки могут возразить относительно последних двух пунктов списка.
                        Ведь, казалось бы, Lispbox = Emacs + Slime?!
                        Но, если внимательно посмотреть на сайт Lispbox, то, под ссылками для скачивания пакета, Вы увидите:
                        Last updated: February 6, 2011.

                        В данной статье я подробно расскажу как установить и настроить кроссплатформенную среду разработки для Common Lisp, как скачивать и устанавливать дополнительные библиотеки при помощи quicklisp — менеджера пакетов Common Lisp. Будет много полезных ссылок на ресурсы и материалы по языку.
                        Речь пойдет о связке GNU Emacs & Slime.
                        Если Вас интересует Common Lisp, Вам нужна кроссплатформенная, мощная, интерактивная Common Lisp IDE с блэкджеком и дамами дебаггером и дизассемблером (внезапно!), то, прошу под кат…

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

                      Самое читаемое