Пользователь
57,4
рейтинг
9 января 2014 в 00:52

Разработка → Опубликован исходный код Light Table



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

Собрав необходимую сумму на Кикстартере, американский разработчик Крис Грэнджер сдержал слово — реализовал поддержку Python и опубликовал исходный код Light Table на Github.

Программа имеет всю необходимую инфраструктуру для написания и подключения плагинов. По сравнению с прошлой версией, в Light Table 0.6.0 значительно повышена стабильность, производительность работы и доделан интерфейс. Фактически, эту IDE теперь реально можно использовать в работе.

Автор говорит, что через движок Behavior-Object-Tag подключаются плагины практически любой функциональности. В качестве примера простого плагина можно посмотреть реализацию поддержки CSS.



Ещё одной важной функцией из оригинального видео на Кикстартере, которую сейчас удалось реализовать, стал встроенный поиск документации. Достаточно выделить мышкой фрагмент кода — и справочная информация появляется в правой части экрана.



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

Скачать Light Table

Появление таких профессиональных инструментов среди проектов Open Source — очень приятная новость, если учитывать высокую стоимость коммерческих IDE, интерфейс которых становится всё более навороченным и загромождённым.

Анатолий Ализар @alizar
карма
751,5
рейтинг 57,4
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (101)

  • +7
    На видео выглядит очень интересно. Особенно идея с расположением кода нескольких функций рядом друг с другом, скакать по табам действительно бывает утомительно.
    • 0
      Может я использую какие-то не те фреймворки, но код одной единственной функции обычно мало чем может мне помочь, т.к. использует явно или неявно еще с десяток методов. Если и нужно смотреть в код другого файла при написании своего, то обычно это целый модуль и его удобнее открыть на вторую половину монитора или на второй монитор.
      • +1
        На видео не зря показан Clojure. В функциональных языках с чистыми функциями такой подход на самом деле имеет намного больше смысла, имхо.
      • +2
        Но в том-то ведь и дело, что вы можете разложить на одном экране десяток функций, которые могут быть разбросаны по разным модулям, и часто они именно в разных модулях, а не в одном. Конечно для этого функции должны быть не очень длинные, но ведь это и так хорошая практика.

        В деле редактирования кода не так часто возникают такие свежие хорошие идеи, поэтому я и радуюсь.
  • –3
    SublimeText forever =)
    • +2
      Эта штука выглядит круче.
      Заметьте, я говорю «выглядит», потому что я смотрю видео и мне нравится, и я вижу, что SublimeText так не умеет. Понятно дело, что SublimeText умеет кучу всего другого, а это всего лишь альфа. Но выглядит круто, да. :)
      • +1
        Эта штука производит «вау» эффект. В саблиме, на мой взгляд, киллер-фича это массовое редактирование.
        Тут пока такого нет, увы.
        • +2
          Да тут вообще пока ничего нет. Просто интересная концепция в видео, которой пока даже нет в представленной альфе. SublimeText вне конкуренции. :)
          • +1
            ST круче (пока), но ST с закрытым кодом, просто предоставляется на бесплатном основании. Эта штука OSS. Я люблю Саблайм, но в долгосрочной перспективе может победить что-то такое. Тем более, что Саблайм не является IDE, а здесь [заявлена IDE], поглядите, поиск по документации из коробки, sandbox, всякие адвансед фичи, все дела.
        • 0
          А что понимается под массовым редактированием? Несколько строк или несколько файлов, или рефакторинг?
          • +2
            Вероятно, он имел ввиду несколько строк (несколько курсоров, если точнее).
            • 0
              Спасибо. Действительно приятная вещь.
        • 0
          Не подскажете, как в ST табнуть выделенный блок кода?
          Т.е. выделить кусок, нажать TAB чтоб он сдвинулся, а не исчез.
          Надоело курсоры перед строчками расставлять.
          • +1
            ⌘\Ctrl + [ или ] – сдвиг влево или вправо соответственно.
            • 0
              Отлично! Спасибо.
          • +2
            Вроде из коробки работает. Вот только что проверил: в тройке без плагинов вполне работает. Да и во втором не помню, чтобы специально настраивал.
            • 0
              Я просто до ST использовал PHP Expert Editor. Там это просто работало — выделил + TAB.
              Да и вертикальный блок внутри любого кода легко выделялся с alt.
  • +2
    Скачал, выглядит крайне стильно и изящно, но сходу ничего так и не понял.
    • –11
      Пробовал открыть C# код, так он даже синтаксис не подсвечивает.
      • +2
        Как я понял сейчас поддерживается только clojure, python, и фронтэнд стек (html/css/js).
        CoffeeScript, кстати подсветил, но как-то не ярко: cl.ly/image/0J0S421D0n1k
      • –1
        [удалено]
  • +9
    А в чём там IDE заключается? Скачал, посмотрел — редактор просто, совсем примитивный, больше ничего не вижу :(
    • +1
      Ну так это же далеко не готовый продукт, скорее прототип, хотя кое что уже есть. Вы Getting Started почитайте.

      Там, чтобы с Питоном поиграться, надо ставить свежий ipython, что мне было лень делать. А вот конфиг самого редактора я поредактировал с интересом. Непонятно только, где заявленные vim keybindings.
      • 0
        У меня настроено полное Python-окружение, но Python вообще не завёлся. «IDE» пишет в консоль какие-то ошибки, в которых я ничего не понимаю. :)
        А в конфиг заглянул, аж страшно стало. Конфиги SublimeText в JSON выглядят значительно понятнее и приятнее.
        • 0
          Уже все поняли, что вы для себя sublime открыли, и все за вас очень рады. :)
          • –1
            Ну, вообще дело не в том, кто и что для себя открыл, а в том, в каком направлении развиваются средства для разработки. Важен тренд и направление, всё остальное субъективно. Sublime просто задал направление в своё время. Я им пользуюсь не так часто, как могло показаться из моих иногда излишне эмоциональных комментариев. :)

            • +6
              Не согласен что тренд задал sublime. Мне кажется что TextMate все таки был раньше
              • –1
                Да вроде бы никто и не скрывает того, что Sublime — это неудачная попытка клонировать Textmate.
    • 0
      Repl прямо в редакторе. Меняешь код функции — сразу видишь результат.
    • 0
      вы даже не прочитали видимо полностью текст этой новости

      ну и docs.lighttable.com/tutorials/full/
  • +3
    Так он же Light :-)

    примитивное NodeJS приложение на экспрессе отказался запускать

    Статические страницы надо попробовать как тут

    Кстати сделано на базе node-webkit, как и недавняя XDK от Intel.
  • +6
    Нужно будет приглядеться получше. Явно делалось с оглядкой на SublimeText, что очень радует, но есть как минимум пара килл фич которых нет в саблайме. И то что это теперь опенсорс — тоже большой плюс. Закрытость SublimeText тормозит его развитие.
    • –1
      Да, про закрытость SublimeText это правда, но кто знает что будет когда LightTable не будет альфа версией. Может и опенсорс ихний исчезнет, и платной сделают :)
      • +3
        Ну и пусть делают. Появится какая-нибудь MariaLight, как это было с MySQL.
      • +7
        Ага, конечно. Весь редактор делает один человек который обчитался про SmallTalk и ClojureScript. Он сделал красвый ролик (в статье), потом запустил программу по сбору средств на кикстартере. За то время, что альфа опубликована в паблик редактором это так и не стало. Если почитать, что автор пишет то такое ощущение, что он хочет доказать всему миру, что на ClojureScript можно написать полезное приложение очень быстро.
        • 0
          У вас какие-то проблемы? Я использую LT для домашнего проекта на clojure. Отличная штука.
          • 0
            Я его пытался использовать для Python. Не вышло. Он бы сначала, что-то одно доделал.
    • 0
      Последнее время (больше года, наверное) обновления SublimeText прилетают очень редко. Может у разработчика кризис идей или он выдохся? За форумом сообщества не слежу.
      • 0
        Я об этом и говорю. Тоже не очень слежу, но где-то читал что и баги какие-то подолгу висят. Кто-то даже пилит открытый клон, но пока не очень преуспел github.com/limetext/lime
      • 0
        Обновления Sublime Text 3 выходят где-то раз в две недели, это редко?

        Просто публичные беты для незарегистрированных пользователей редки.

        Пруф: www.sublimetext.com/3dev
        • 0
          Да, действительно, «ночные» сборки выходят чаще. Я почему-то был уверен, что сижу на канале обновления dev. Благодарю. :)
  • +10
    >… учитывать высокую стоимость коммерческих IDE, интерфейс которых становится всё более навороченным и загромождённым

    Не знаю, как другие коммерческие IDE, а вот phpStorm стоит своих денег! Всю навороченность можно использовать в пользу своей эргономичности, а в силу гибкости IDE, загроможденность легко убирается.
    • +4
      Кстати, и вправду интересно, где там дорогостоящие IDE нашли. Это какой-нибудь 3DSMax или Maya стоит как самолёт, IDE же вообще недорогие.
      Visual Studio? Express-версия бесплатна.
      Eclipse? Да тоже вроде бесплатный.
      WebStorm? Стоит как два ящика пива, плюс постоянные скидки, во время которых даже у вечно голодного студента язык не повернётся назвать эту IDE дорогой.
      • 0
        А как же Delphi?
        • +1
          >> Visual Studio? Express-версия бесплатна.

          Студия без решарпера — практически бесполезна:)
  • +5
    учитывать высокую стоимость коммерческих IDE
    Учитывая нулевую стоимость опенсорс IDE.

    интерфейс которых становится всё более навороченным и загромождённым
    Не знаете, как убрать 2 галочки в меню view, чтобы от интерфейса осталась только строка табов?

    Я уже и не говорю про разницу в функционале.
  • 0
    Это IDE или IDE для python? И IDEшность там где? Environment-а вовсе не увидел.
  • +6
    Загроможденность, загроможденность, чего все так стремятся к «легкому, облачному, воздушному» интерфейсу? Загроможденный интерфейс легко правится под себя, и уже становится не загроможденным, убирается пара панелей не нужных, во View выбираются нужные, никто же не заставляется пользоваться интерфейсом с кучей кнопок на пол экрана.
    Это не загроможденность, это функциональность.
    • +1
      Вы с планеты Eclipse?
      • +3
        Нет, я с планеты VS. Оттуда и писал.
        • +1
          Это в галактике Мелкософта и проприетарных программ?
          • +10
            Это вам в соседнюю звёздную систему. А тут про интерфейс.
            • 0
              Ну тогда Sublime Text.
              • 0
                SublimeText пользуюсь также активно. И он удобен, но это не IDE всё же. Хотя некоторые вещи меня конечно в нем удивляют, например отсутствии указателя кодировки без плагинов. Ну и так далее по мелочи.
                • 0
                  Да и лучше ли IDE? Мое личное мнение, что лучше использовать легковесный редактор. А все что нужно еще выносить в периферию. Зачем указатель кодировки в стандартной поставке? Обычно и так работаем в utf-8. Хотя, может вопрос и спорный.
                • 0
                  Указатель кодировки и типа переносов строк добавлен в последнем выпуске (17 декабря прошлого года).
                  • 0
                    А я все на ST2 сижу. Видно пора переходить на тройку.
  • +1
    Пока что лучшая IDE для ClojureScript. Поиск по документации, инлайн доки, jump-to-definition, возможность прямо-вот-тут-в-коде выполнить тут же написанные функции в контексте подсоединенного браузера — все это работает прямо из коробки. Красота!
  • –1
    Пример в видео с ClojureScript жесть. А так круто.
  • +1
    Мне эта софтина чем-то напомнила emacs, где вместо elisp clojure. Сам, как любитель кложуры, очень жду апгрейда данной ide, сам думаю на досуге занятся допилом, но пока времени нету.
  • 0
    Симпатично, но использовать пока очень рано. Попробовал наверстать несложную страничку – подсветки нет, автодополнения тегов нет, атрибуты тегов не подсказывает, табуляция странная.
    • +1
      Это все есть в использованном им CodeMirror, но почему-то он решил это не включать. Вероятно ради минимализма и легкости интерфейса.
  • +10
    SublimeText, SublimeText, SublimeText, SublimeText, SublimeText. Да вы же фанатики уже. Скажите мне как вы им пользуетесь? Это примитивный редактор в котором можно редактировать полтора файла в проекте где полтора программиста. К ИДЕ он не имеет никакого отношения даже забив его плагинами. Я просто не могу понять, что с его помощью пишут. Там даже самых примитивных возможностей по рефакторингу кода нет, зато есть костыль с мультикурсорами.
    • 0
      В принципе, согласен с вами, что не IDE, но почему:
      костыль с мультикурсорами

      Почему костыль? Это мега-полезная функция. Посмотрите, сколько голосов собрал фичреквест в багтрекере IntelliJ IDEA.

      Единственное, что в нём примитивно — это поддержка работы с проектами/workspace. Сделано по-идиотски, в остальном там нет ничего такого примитивного. Windows Notepad — вот что примитивно :)
      • 0
        А в чём проблема с проектами? Не первый раз слышу подобное, но, ИМХО, в Саблайме оно идеально сделано. Мгновенное переключение проектов, одновременная работа с несколькими проектами и при этом ничего лишнего.
    • 0
      Верно говорите, товарищ! TextMate 2 — всему голова!
    • НЛО прилетело и опубликовало эту надпись здесь
      • +1
        IDE назвать его, конечно, язык не повернется
        А можете объяснить, почему? Я уже года 2 только в Саблайме и работаю (frontend-разработка). Вдруг что-то упускаю…
        • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        IDE не IDE, но в нем удобно работать. Судя по всему, многим не нужен дополнительный функционал для рефакторинга и прочего. Кстати Sublime все-таки имеет что-то от IDE. С++ у меня понимает, переходит к определению функций/переменных. Показывает ошибки в реальном времени — вот только написал, а оно уже проверило.
        • –3
          С++ у меня понимает, переходит к определению функций/переменных. Показывает ошибки в реальном времени — вот только написал, а оно уже проверило.

          Это всё функции редактора, а не IDE :)
          • +2
            Подскажите, какими функциями IDE вы еще пользуетесь? Какие вещи упрощают вам разработку, по сравнению с текстовым редактором?
            • 0
              Я например, тащусь от поиска, хотя это тоже наверное не совсем функция IDE. Но все же в phpStorme, благодаря его индексу, можно искать очень быстро в большом проекте по названию (умный поиск) отдельных методов, классов, файлов. Быстро переходить к классам, на которых больше времени уйдет, если вспоминать в какой подподподпапке он лежит. Ну а также рефакторинг, реформатинг, CSV!!! Что очень для меня тоже важно. Ну просто удобней работать в одной среде. Консолью встроенной также пользуюсь иногда. Как-то делал деплоймент на фтп, тоже иногда полезная штука. ТОДОшки выделены отдельно, хотя для этого лучше использовать багтрекер :), но для мелочи иногда пользуюсь.

              Можно по ИДЕе и обойтись без всего этого, блокнот еще никто не отменял. Но раз уж мы говорим об эргономичности разработки, то тут пожалуй большой козырь в руке Джетбраинсов.
            • +1
              Если обобщать, в том числе и ветку про рефакторинг, то это в первую очередь глубокое «понимание» исходников. Куда больше, чем на уровне просто редактора. Начиная с банального браузера классов и заканчивая работой с проектами. А работа с проектами — это намного больше, чем накидать много файлов в воркспейс :) Это как минимум чёткое отслеживание зависимостей, как от внешних источников, так и внутри проекта — от классов, библиотек, переменных/констант…

              Отладчик. С инспекцией чего угодно, с простыми брекпойнтами, с брекпойнтами по условиям, со step in/ster over/run to и прочими радостями.

              Работа с коммитами. Интеллектуальный браузер SVN, с красивыми диффами по каждой ревизии, с отслеживанием зависимостей (см. про понимание исходников/проектов), etc.

              Встроенная работа с багтрекером, с отслеживанием коммитов по таскам, зависимостей в проектах… В общем, см. букву I в аббревиатуре IDE :-)

              Конечно, много чего можно добиться наворачиванием каких-нибудь плагинов, но в конечном итоге и получится не редактор, а IDE.

              Впрочем, это не мешаем мне часто пользоваться просто редактором (mooedit). Но чем дальше, тем больше он обрастает всякими плюшками и становится монстрообразней :-)
    • 0
      Основная (для меня) фишка Саблайма – как раз мега-удобная работа в проекте, где миллион файлов и постоянно нужно работать с несколькими разными файлами. Пока что ничего удобнее и быстрее (я про скорость процесса разработки) не встречал.

      возможностей по рефакторингу кода
      Простите, а это как, вообще? Рефакторинг – это переписывание кода «по-другому», грубо говоря. Очевидно, это только человек-программист сможет сделать, но никак не редактор.
      • 0
        Посмотрите как рефакторинги сделаны в IDE от JetBrains. Автоматические рефакторинги — это очень круто. Человек потратит кучу времени и сделает, скорее всего, кучу ошибок, если будет делать всё это руками.

        Рефакторинги в данном случае — это набор автоматических инструментов реструктуризации исходного кода. Естественно, что логические изменения, которые надо внести в код, продумывает разработчик, а рефакторинги автоматизируют внесение изменений в код.
        • 0
          А можно какой-нибудь реальный пример такого автоматического «рефакторинга»?
          • 0
            Переименовать переменную в текущем скоупе. Переименовать метод/функцию, причем переименуется везде. Добавить новый параметр, при этом в вызовы добавится дефолтное значение или ноль или что-нибудь такое по смыслу. Сгенерировать конструктор с выбранными пропертями. Ну и так далее
            • +1
              Видимо, не всем это нужно. Или может и нужно время от времени, но раздражает скорость работы IDE.
            • –4
              Всё это делается либо банальным поиск+замена, либо сниппетами. Почему вы называете это «рефакторингом»? %)
              • +1
                Как с помощью поиска+замены перенести метод из одного класса в другой? Как изменить сигнатуру метода? Как перенести класс из одного модуля/пакета в другой? Как разделить один метод на несколько маденьких? Как разделить класс на несколько? Ну и т. д. Поиск+замена ничего не знает о структуре кода, рефакторинги знают, поэтому действуют аккуратно, ничего не ломая.
                • –3
                  Перенести метод – это вообще копи-паст. Что такое «сигнатура»? Перенести класс – опять же, копи-паст. Разделить метод – это уже похоже на рефакторинг, каким образом тут автоматизация поможет? Разделить класс – это ещё более сложно логически. Ну и т.д.
                  • +3
                    Перенести метод – это вообще копи-паст

                    Отлично, а если метод в существующем коде в сотне мест вызывается. А вообще почитайте Martin Fowler, Refactoring: Improving the Design of Existing Code, не повредит
                    • –1
                      Тогда это копи-паст + поиск и замена.

                      Не люблю технические книги, в них почти всегда много воды (если это не справочник). Лучше покажите реальный пример кода, который сложно изменить банальными средствами, но просто этим вашим автоматическм «рефакторингом».
                      • +2
                        Ну это же очень просто понять, что «копи-паст + поиск и замена» не решит данную проблему автоматически. Вы будете сидеть и для каждой найденной строчки делать действие «Пропустить» или «Заменить», потому что в коде могут дублироваться имена методов или полей, или переменных. Автоматическое средство рефакторинга изменит только тот код, который непосредственно относится к той сущности, которую вы решили отрефакторить, и вам не надо вообще думать о том, что где-то вы случайно заменили не то, что нужно или что-то пропустили.

                        На этом месте уже должно быть всё понятно, какие вам ещё примеры нужны? :)

                        Ну давайте на примере Python'а. Вот у вас есть, скажем модуль в какой-то иерархии пакетов и модулей. В этом модуле есть класс, который используется в других модулях. Вы захотели этот класс перенести в другой модуль. Ваши действия? Копи-паст + поиск и замена? Вручную будете искать, где класс используется и руками будете везде править импорты? А если проект огромный? Средствами IDE с инструментами рефакторинга это можно сделать автоматически/полуавтоматически без лишнего геморроя.
                        • –2
                          Каким таким волшебным образом ваш «рефакторинг» будет знать то, чего нет в коде? А если в коде оно есть, то и поиск спокойно это найдёт. Периодически делаю такое, заменяя/переименовывая метод по всему проекту в нескольких десятках файлов одной операцией.

                          Так что, данная задача элеменарно решается простейшими методами. Всё ещё не могу представить задачу, которую сложно решить банальными средствами, но просто автоматическим «рефакторингом».
                          • +1
                            Допустим, есть два класса. Экземпляры каждого класса используются в коде во множестве мест. В каждом из этих классов есть метод, который называется одинаково и там и там. Вы решили переименовать метод в одном из классов, а второй класс не трогать. Инструмент рефакторинга сделает изменения в коде только для экземпляров того класса, в котором вы решили переименовать метод. Экземпляры второго класса, где вы метод не переименовываете, он трогать не будет. В этом и смысл.

                            Каким таким волшебным образом...

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

                            Кстати, для SublimeText тоже есть плагин для рефакторинга Python-кода, который называется SublimeRope, основанный на библиотеке инструментов рефакторинга «Rope».
                            • –3
                              То есть, у вас два одинаковых метода с одинаковой сигнатурой, но переименовать вы хотите только один? Весьма надуманная ситуация, ИМХО.

                              Поэтому я и просил пример какого-нибудь реального кода.
                              • +1
                                В динамических языках сигнатура может быть не обязательно одинаковой, к тому же как вам поможет одинаковая сигнатура при «find+replace» в данном случае?

                                Пример не надуманный, а вполне реальный и часто встречаемый на практике. И примеров можно привести ещё много, но мне уже лень. Это дискуссия уже излишне затянулась, я считаю. :)
                      • +3
                        В Вас, похоже, слишком мало лени для программиста.
  • +4
    Пара штрихов, и vim тоже так сможет…
    • 0
      В LT есть VIM режим.
      Можно конечно прицепить clojure repl к VIM с ворохом плагинов.
      Но нормальный лайв-редактор сделать не получится.
      • 0
        Vim режим не есть идеология vim.
        И сделать vim с теми фишками, что показаны в LT — не составит труда. Уже сейчас я спокойно смотрю сигнатуры функций (cpp, haskell) и документацию к ним (если представлена). И все это в паре нажатий клавиш на нужном месте.
        • 0
          Суть LT — интерактивность. Правда использовать с cpp это пока невозможно. Я сам пишу в основном в Vim, напичканном плагинами разной глючности и убогости. Делать коряво-костыльный IDE из него не хочется вообще.
  • +1
    Пока в нём ничего особенного, кроме пары интересных фишек, нету. Посмотрим, что дальше будет.
  • 0
    Выглядит очень многообещающе, спасибо! Не знал раньше про этот редактор, достойный конкурент Саблайму растёт.

    Фишка с выделением кусков кода в отдельные мини-окошки редактора очень порадовала.
  • –1
    Ничего революционного в этом редакторе нет, почти все эти фичи в том или ином виде есть в различных IDE. В результате, если прикручивать новые и новые возможности, оно будет так же «тормозить» как и типичная IDE.
    • +2
      Покажите, если не трудно, какой-нибудь ещё редактор с режимом редактирования нескольких кусков кода и режимом реалтайм-выполнения кода.
  • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    Посмотрел видео. Идеи типа «we see how values flow through the program», которые еще Брет Виктор очень продвигает, работают только на примерах вроде 2 + 2. Т. е. максимум это подходит для фронтенда. Если работа идет хотя был на 2 уровне абстракции и выше — эти идеи становятся абсолютно бесполезны.
    • +1
      По идее Брета Виктора проект и создан.
      Для C/C++ тоже вряд ли поддержку сделают, слонжовато будет реализовать.
      Так что vim — всему голова.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.