Netflix открыла код инструмента Polynote, гибрида IDE и текстового редактора

Оглавление (нажмите, чтобы открыть):

IT-блоги • Netflix открыл код интерактивной среды вычислений Polynote

Документы в Polynote представляют собой упорядоченный набор ячеек, которые могут содержать код или текст. Каждая ячейка редактируется и исполняется по отдельности. Допускается перегруппировка, удаление и добавление ячеек, но при этом состояние данных для каждой ячейки зависит от вычислений в прошлых ячейках (выполнение сверху-вниз). Подобный подход гарантирует повторяемость определённых в документе вычислений (повторное выполнение документа на любых системах приведёт к тому же результату). Информация о зависимостях и конфигурация сохраняются непосредственно в документе, а не в отдельных файлах.

В отличие от похожих проектов Jupyter и Zeppelin, новая среда позволяет смешивать в одном документе код на нескольких языках программирования, обеспечивая совместный доступ к данным из кода на нескольких языках (определяется общая схема данных). Например, в одном документе можно совмещать код на языке Scala с применением популярных библиотеки машинного обучения и визуализации для языка Python. На текущем этапе развития реализована поддержка языков Scala, Python, SQL и Vega.

Из других особенностей Polynote выделяются расширенные средства для редактирования кода и текста, близкие к возможностям интегрированных сред разработки и текстовых процессоров. При редактировании кода поддерживается автодополнение, подсветка мест возникновения ошибок, вывод подсказок для параметров функций и методов. В планах возможность перехода на определения переменных/функций из мест их вызова (jump-to-definition).

Что касается подготовки документации и отчётов, процесс редактирования теста осуществляется в режиме WYSIWYG, позволяющем сразу наблюдать конечный отформатированный результат. При этом для определения формул предусмотрена возможность вставки выражений в формате LaTeX.

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

Обрабатываемые данные отображаются в наглядном виде с разбивкой по типам или в табличном представлении. Поддерживается интеграция с Apache Spark для просмотра, анализа и визуализации больших объёмов данных. Для упрощения визуализации предлагается встроенных редактор графиков и диаграмм. В качестве опции предусмотрена возможность применения для визуализации Vega и Matplotlib.

Формат AV1 заметно опережает x264 и libvpx-vp9 по уровню сжатия, но из-за усложнения алгоритмов требует существенно больше времени для кодирования (по скорости кодирования libaom отстаёт от libvpx-vp9 в сотни раз, а от x264 в тысячи раз). Кодировщик rav1e предоставляет 11 уровней производительности, наивысшие из которых позволяют добиться скорости, близкой к кодированию в режиме реального времени. Кодировщик доступен как в форме утилиты командной строки, так и в виде библиотеки.

Поддерживаются все основные возможности AV1, включая поддержку внутренне- и внешне-кодированных кадров (intra- и inter-кадров), суперблоков 64×64, цветовой субдискретизации 4:2:0, 4:2:2 и 4:4:4, 8-, 10- и 12-разрядного кодирования глубины цвета, RDO (Rate-distortion optimization) оптимизации искажений, различные режимы предсказания межкадровых изменений и выявления трансформаций, управление скоростью потока и выявление усечения сцены.

Proton позволяет напрямую запускать в Linux-клиенте Steam игровые приложения, поставляемые только для Windows. Пакет включает в себя реализацию DirectX 9 (на базе D9VK), DirectX 10/11 (на базе DXVK) и DirectX 12 (на базе vkd3d), работающие через трансляцию вызовов DirectX в API Vulkan, предоставляет улучшенную поддержку игровых контроллеров и возможность использования полноэкранного режима независимо от поддерживаемых в играх разрешений экрана.

В новой версии:

  • В состав интегрирован пакет vkd3d, предоставляющий реализацию Direct3D 12, работающую через трансляцию вызовов в API Vulkan;
  • Прекращена поставка вариантов сборок Wine и других библиотек со включёнными отладочными символами. Для отладочных целей предложена отдельная «debug»-ветка Proton, доступная в клиенте Steam;
  • Обновлена система сборки. В makefile добавлена новая сборочная цель ‘redist’, упрощающая редистрибуцию сборок Proton между пользователями. Значительно ускорен процесс сборки. Используемый для сборки образ виртуальной машины обновлён до Debian 10;
  • Проведена работа по сокращению потребления дискового пространства пакетом Proton и уменьшению размера загружаемых обновлений;
  • Внесены улучшения, связанные с работой Rockstar Launcher и Grand Theft Auto 5;
  • Улучшена поддержка игровых контроллеров в играх Farming Simulator 19 и Resident Evil 2;
  • Решены проблемы с мышью в игре Arma 3;
  • Обеспечена возможность запуска игры «DmC: Devil May Cry»;
  • Прослойка DXVK (реализация DXGI, Direct3D 10 и Direct3D 11 поверх API Vulkan) обновлена до ветки 1.4.4;
  • Прослойка D9VK (реализация Direct3D 9 поверх API Vulkan) обновлена до экспериментальной версии 0.30;
  • Компоненты FAudio с реализацией звуковых библиотек DirectX (API XAudio2, X3DAudio, XAPO и XACT3) обновлены до выпуска 19.11;
  • Компоненты wine-mono, позволяющие запускать многие XNA-игры и игры на движке Unreal Engine 3, обновлены до версии 4.9.4.

Автоматическое управление памятью в Rust избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo, позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек поддерживается репозиторий crates.io.

Основные новшества:

    Стабилизирован новый синтаксис асинхронного программирования, основанный на функции «async», блоке async move < . >и операторе «.await», которые упрощают написание обработчиков, не блокирующих основной поток команд. По сравнению с ранее предлагавшимся API для асинхронного ввода/вывода конструкции async/.await просты для восприятия, хорошо читаемы и позволяют реализовывать сложные асинхронные взаимодействия с использованием привычных приёмов управления потоком выполнения на основе циклов, условных операторов и исключений.

Синтаксис Async-await позволяет создавать функции, которые могут приостанавливать своё выполнение, возвращать управление в основной поток, а затем возобновлять выполнение с того места, где они были остановлены. Например, подобная приостановка востребована при обработке ввода/вывода, в котором во время ожидания поступления очередной порции данных можно выполнять другую работу. Функции и блоки, определённые через «async fn» и «async move», возвращают типаж Future, определяющий представление отложенного на будущее асинхронного вычисления. Непосредственно инициировать отложенное вычисление и получить результат можно при помощи оператора «.await». До вызова «.await» никаких действий не производится и не планируется заранее, что позволяет создавать сложные вложенные конструкции без дополнительных накладных расходов.

  • Стабилизирован «#![feature(bind_by_move_pattern_guards)]», позволяющий использовать переменные с типом привязки «by-move» в шаблонах и использовать ссылки на эти переменные в секции «if» выражения «match». Например, теперь допустимы следующие конструкции:
  • Разрешено указание атрибутов при определении параметров функций, замыканий и указателей на функции. Поддерживаются атрибуты условной компиляции (cfg, cfg_attr), управляющие диагностикой через lint (allow, warn, deny и forbid) и вспомогательные атрибуты вызова макросов.
  • Предупреждения о проблемах, выявленных при проверке заимствования переменных (borrow checker) c использованием техники NLL (Non-Lexical Lifetimes), переведены в разряд фатальных ошибок. Напомним, что система проверки на основе нового механизма учёта времени жизни заимствованных переменных дала возможность выявлять некоторые проблемы, которые оставались незамеченными старым кодом проверки. Так как вывод ошибки для подобных проверок мог повлиять на совместимость с ранее работающим кодом, вместо ошибок первое время выдавались предупреждения. Теперь при работе в режиме Rust 2020 предупреждения заменены на ошибки. В следующем выпуске вывод ошибки также будет реализован в режиме Rust 2015, что позволит окончательно избавиться от старого borrow checker;
  • Признак «const», определяющий возможность использования в любом контексте вместо констант, применён для функций Vec::new, String::new, LinkedList::new, str::len, [T]::len, str::as_bytes, abs, wrapping_abs и overflowing_abs;
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы Pin::into_inner, Instant::checked_duration_since и Instant::saturating_duration_since;
  • В пакетный менеджер cargo добавлена возможность использования для файлов конфигурации расширения «.toml». Добавлена предварительная поддержка сборки стандартной библиотеки непосредственно из Cargo. Добавлен флаг «—workspace», заменивший неоднозначно воспринимаемый флаг «—all». В метаданные добавлено новое поле «publish», позволяющее публиковать зависимости, указывая тег в git и номер версии. Добавлена тестовая опция «-Ztimings» для генерации HTML-отчета о времени выполнения различных стадий компиляции.
  • В компиляторе rustc в диагностических сообщениях включено обрезание хвостов кода, не умещающегося в терминал. Обеспечен третий уровень поддержки целевых платформ i686-unknown-uefi и sparc64-unknown-openbsd. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования и публикации официальных сборок.
  • В новой версии:

    • Осуществлён переход на Qt Quick Controls 2, а следовательно полностью переделаны все меню.
    • Добавлено меню для переключения клиент/серверного, оффлайн режимов, и ввода адреса сервера.
    • Добавлен индикатор в процентах, показывающий прогресс завершения воспроизведения loop-ов, эта возможность не реализована в режиме клиента так как это требует синхронизации и индикатор в любом случае будет показывать неточную информацию.
    • Исправлена ошибка, при которой каждая последующая отпущенная кнопка после первой за пределами прямоугольника оставалась графически активной.

    Open-sourcing Polynote: an IDE-inspired polyglot notebook

    We are pleased to announce the open-source launch of Polynote: a new, polyglot notebook with first-class Scala support, Apache Spark integration, multi-language interoperability including Scala, Python, and SQL, as-you-type autocomplete, and more.

    Polynote provides data scientists and machine learning researchers with a notebook environment that allows them the freedom to seamlessly integrate our JVM-based ML platform — which makes heavy use of Scala — with the Python ecosystem’s popular machine learning and visualization libraries. It has seen substantial adoption among Netflix’s personalization and recommendation teams, and it is now being integrated with the rest of our research platform.

    At Netflix, we have always felt strongly about sharing with the open source community, and believe that Polynote has a great potential to address similar needs outside of Netflix.

    Feature Overview

    Reproducibility

    Polynote promotes notebook reproducibility by design. By taking a cell’s position in the notebook into account when executing it, Polynote helps prevent bad practices that make notebooks difficult to re-run from the top.

    Editing Improvements

    Polynote provides IDE-like features such as interactive autocomplete and parameter hints, in-line error highlighting, and a rich text editor with LaTeX support.

    Visibility

    The Polynote UI provides at-a-glance insights into the state of the kernel by showing kernel status, highlighting currently-running cell code, and showing currently executing tasks.

    Polyglot

    Each cell in a notebook can be written in a different language with variables shared between them. Currently Scala, Python, and SQL cell types are supported.

    Dependency and Configuration Management

    Polynote provides configuration and dependency setup saved within the notebook itself, and helps solve some of the dependency problems commonly experienced by Spark developers.

    Data Visualization

    Native data exploration and visualization helps users learn more about their data without cluttering their notebooks. Integration with matplotlib and Vega allows power users to communicate with others through beautiful visualizations

    Reimagining the Scala notebook experience

    On the Netflix Personalization Infrastructure team, our job is to accelerate machine learning innovation by building tools that can remove pain points and allow researchers to focus on research. Polynote originated from a frustration with the shortcomings of existing notebook tools, especially with respect to their support of Scala.

    For example, while Python developers are used to working inside an environment constructed using a package manager with a relatively small number of dependencies, Scala developers typically work in a project-based environment with a build tool managing hundreds of (often) conflicting dependencies. With Spark, developers are working in a cluster computing environment where it is imperative that their distributed code runs in a consistent environment no matter which node is being used. Finally, we found that our users were also frustrated with the code editing experience within notebooks, especially those accustomed to using IntelliJ IDEA or Eclipse.

    Some problems are unique to the notebook experience. A notebook execution is a record of a particular piece of code, run at a particular point in time, in a particular environment. This combination of code, data and execution results into a single document makes notebooks powerful, but also difficult to reproduce. Indeed, the scientific computing community has documented some notebook reproducibility concerns as well as some best practices for reproducible notebooks.

    Finally, another problem that might be unique to the ML space is the need for polyglot support. Machine learning researchers often work in multiple programming languages — for example, researchers might use Scala and Spark to generate training data (cleaning, subsampling, etc), while actual training might be done with popular Python ML libraries like tensorflow or scikit-learn.

    Next, we’ll go through a deeper dive of Polynote’s features.

    Reproducible by Design

    Two of Polynote’s gu >reproducibility and visibility. To further these goals, one of our earliest design decisions was to build Polynote’s code interpretation from scratch, rather than relying on a REPL like a traditional notebook.

    We feel that while REPLs are great in general, they are fundamentally unfit for the notebook model. In order to understand the problems with REPLs and notebooks, let’s take a look at the design of a typical notebook environment.

    A notebook is an ordered collection of cells, each of which can hold code or text. The contents of each cell can be modified and executed independently. Cells can be rearranged, inserted, and deleted. They can also depend on the output of other cells in the notebook.

    Contrast this with a REPL environment. In a REPL session, a user inputs expressions into the prompt one at a time. Once evaluated, expressions and the results of their evaluation are immutable. Evaluation results are appended to the global state available to the next expression.

    Unfortunately, the disconnect between these two models means that a typical notebook environment, which uses a REPL session to evaluate cell code, causes hidden state to accrue as users interact with the notebook. Cells can be executed in any order, mutating this global hidden state that in turn affects the execution of other cells. More often than not, notebooks are unable to be reliably rerun from the top, which makes them very difficult to reproduce and share with others. The hidden state also makes it difficult for users to reason about what’s going on in the notebook.

    Netflix открыла код интерактивной среды вычислений Polynote

    Netflix представила новую интерактивную среду вычислений с открытым исходным кодом Polynote, предназначенную для сопровождения процесса научных исследований, обработки и визуализации данных, сообщает OpenNet.

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

    Мастер Йода рекомендует:  Red Hat и IBM могут задержать выход Java 9

    В отличие от Jupyter и Zeppelin, новая среда позволяет смешивать в одном документе код на нескольких языках программирования. Сейчас Polynote поддерживает Scala, Python, SQL и Vega.

    Polynote предоставляет расширенные средства для редактирования кода и текста, близкие к возможностям интегрированных сред разработки и текстовых процессоров: есть автодополнение, подсветка ошибок, вывод подсказок для параметров функций и методов. В планах — возможность перехода на определения переменных/функций из мест их вызова.

    Что касается подготовки документации и отчётов, редактирование теста происходит в режиме WYSIWYG, позволяющем сразу наблюдать конечный результат. Для определения формул предусмотрена возможность вставки выражений в формате LaTeX.

    Среда позволяет полностью контролировать процесс выполнения: в области задач показывается, какой код сейчас выполняется и на какой стадии находятся вычисления. Через таблицу символов можно просмотреть все определённые функции и переменные, проинспектировать их значение или визуализировать изменения. Все сбои при выполнении и исключительные ситуации сразу подсвечиваются в редакторе кода. В редакторе в режиме реального времени выделяется выполняемая строка кода.

    Обрабатываемые данные отображаются в наглядном виде с разбивкой по типам или в табличном представлении. Поддерживается интеграция с Apache Spark для просмотра, анализа и визуализации больших объёмов данных. Для упрощения визуализации предлагается встроенный редактор графиков и диаграмм, в качестве опции предусмотрена возможность применения для визуализации Vega и Matplotlib.

    1. Заполните анонимную форму — 5 минут.
    2. Укажите зарплатные (и другие) ожидания.
    3. Выберите желаемую индустрию или область деятельности.
    4. Получайте релевантные предложения​​.​​​​​​​​​​ ​

    Netflix adds to open source with Mantis and Polynote

    We love open source! And now, two new recently open sourced pieces of software from Netflix have arrived. Mantis allows you to build realtime stream processing applications and Polynote is an IDE-inspired polyglot notebook. See what both of these can do, some of their use cases, and what important features set them apart.

    148 million video streaming subscriptions don’t run themselves. The Netflix tech department develops internal tools and engineering systems to help the company juggle its massive reach. The video streaming giant recently announced that they are making two of their platforms open source. Previously the company’s tech department open sourced a microservices orchestration engine, a cloud gateway, and a container management platform, just to name a few.

    Give a warm welcome to Mantis, an open source platform that helps build realtime stream processing applications and Polynote, an IDE-inspired polyglot notebook.

    Take a break from binge-watching Bojack Horseman and take a look at these open source tools and their capabilities.

    Mantis

    Mantis has been in production since 2014 and according to its documentation, it “processes trillions of events and peta-bytes of data every day”. This high amount of data processing means that it’s perfect for high volume cases. It offers stream processing-as-a-service in a self-contained platform.

    From the documentation:

    Similar to micro-services deployed in a cloud, Mantis applications (jobs) are deployed on the Mantis platform. The Mantis platform provides the APIs to manage the life cycle of jobs (like deploy, update, and terminate), manages the underlying resources by containerizing a common pool of servers, and, similar to a traditional micro-service cloud, allows jobs to discover and communicate with other jobs.

    Check out Mantis out on GitHub and read the full documentation here.

    What can you use Mantis for?

    According to the documentation, some of Mantis’ use cases include:

    • Realtime monitoring: At Netflix, Mantis monitors the massive amounts of Streams per Second in order to determine the current health of the streaming service. If the number of Streams per Second dips below a certain amount or shows an abnormal change, Mantis detects the change in seconds.
    • Contextual alerting: On a large scale, Netflix analyzes interactions between microservices in order to determine changes and anomalies. According to Netflix, Mantis’ realtime nature cuts down the time of detecting anomalies to seconds.
    • Chaos testing: What’s the worst thing that can happen? Test it! Chaos testing and experimental is an exercise of system resiliency in apps. Mantis monitors chaos testing so that teams can analyze the data and determine what is causing anomalies.
    • Alerting on Log: Use Mantis to create alerts attached to certain patterns in application logs. Mantis will then watch in realtime for these patterns alerts you when it detects them in application logs.

    Текстовый редактор или >

    Когда вы работаете с конфигами, текстом — то текстовый редактор.
    Когда с кодом, то IDE.

    Теоретически можно с кодом и в редакторе работать, но вы будуте работать медленно и непродуктивно, поэтому за единицу времени сделаете меньше и заработаете меньше денег.
    Более того, проект будет некачественным, т.к. в IDE есть статический анализ кода, а в редакторах нет.

    Это хорошо заметно в Laravel, который писался в Sublime, и когда его открываешь в PhpStorm, он сразу показывает красным участки кода с явными ошибками.

    Хочу выразить свою противоположную точку зрения.
    Используя IDE ты будешь тратить времени больше:

    1. Поиск файлов по дереву занимает время, при этом в голову структура файлов хуже откладывается, нежели с использованием нечеткого поиска. По-умолчанию в IDE не видел такой функции.

    2. Использование автодополнения\подсказок — ты не напрягаешь память чтобы вспомнить, ты не тренируешь навык поиска нужно информации. В виме я пользуюсь в основном автодополнением по использованым словам, чаще прописываю вручную.

    3. Почему я буду в редакторе работе медленнее чем в IDE?

    4. Синтаксические ошибки можно и в редакторе настроить. Другой вопрос в том, что стоит ли на это полностью полагаться. Учатся на ошибка, если большую часть по синтаксическим ошибкам будет делать IDE — многому ли ты научишься?
    Трудно повторить ошибку, с который ты час промучаешься в поисках и\или исправлении (алигория).

    Не стремитесь к крайностям, всегда должна быть середина. Полностью вручную писать — не продуктивно. Полностью полагаться на инструмент может стать куда более не продуктивнее.

    в IDE есть статический анализ кода, а в редакторах нет

    Начиная использовать Vim, нужно понимать, что Vim — не IDE и не должен быть ей. Скорее всего, большинство фич, которые Вы любите в IDE (умный автокомплит, интеграция с VCS, отладчиком, навигация по коду) в Vim есть, но сделана в нём хуже. Зато Vim уделывает всякие эклипсы по скорости, собственно, редактирования текста. Я не видел в какой-нибудь Visual Studio или IDEA возможности повторить хоткей n раз, а в Vim нет ничего проще:

    И так можно повторить любую команду, просто поставив перед ней число. Потом, куча способов выделения:

    И множество других. Аналогично, существует множество коминаций для вырезания текста и копирования:

    Комбинации, которые я перечислил — лишь малая часть всех кобинаций Vim. Ни одна IDE без Vim-mode не может сравниться просто физически, потому что по сути комбинаций в Vim бесконечное число, поскольку новые комбинации создаются из существующих на лету:

    Ну и если заинтересуетесь, то обязательно посмотрите на плагин Vim-Surround, тоже очень клёвая вещь.

    P. S. На счёт Vim Mode в IDE ничего особо сказать не могу, пробовал только в Sublime Text (который и не IDE вовсе) с Vintage Mode, и вроде там не все комбинации соответствовали — в общем, я забил. Но если брать IDE с Vim Mode, то нужно посмотреть, чтобы под эту IDE был Vim Surround.

    Netflix открыла код инструмента Polynote, гибрида IDE и текстового редактора

    > Writing Polynote’s code interpretation from scratch allowed us to do away with this global, mutable state. By keeping track of the variables defined in each cell, Polynote constructs the input state for a given cell based on the cells that have run above it. Making the position of a cell important in its execution semantics enforces the principle of least surprise, allowing users to read the notebook from top to bottom. It ensures reproducibility by making it far more likely that running the notebook sequentially will work.

    Now if I change Cell 2 to

    and execute, Cell 3’s result becomes stale. Do you track such dependencies? Would really love to read more about the underlying implementation.

    Currently it takes a shallow copy of the state output by each cell, meaning every value is going to be a primitive value or a reference. If it’s a reference to mutable state, you’re kind of on your own with respect to keeping reproducibility. I felt like this was a good compromise between strictly enforced reproducibility and practicality; if it turns out to be confusing we could consider deep copying the state, or having an option to do that (I could imagine it being pretty bad for efficiency in a lot of ML use cases, though).

    Personally, I’m looking forward to trying out the SQL support. I haven’t seen an elegant solution for SQL notebooks in Jupyter, it was always second-class via Python or some such. Or have I missed something?

    Interesting. Judging by that it seems to be implemented with a JVM language and a screenshot shows «Scala» as a supported language, I’m guessing at least all the JVM languages are supported (personally hope for Clojure) but can’t seem to find a list of supported languages anywhere in the post or on the website.

    What languages are supported by Polynote?

    Closest thing that comes to mind is something like Apache Drill, which coincidentally also uses Apache Calcite as the SQL interpreter.

    Also wondering why I would use this over Zeppelin which can support other interpreters like Flink?

    As ever, the best answer is the Notebooks Are Bad, Actually

    We’ve had some better options contributed in the past couple of weeks, but as long as we’re going to change it I didn’t want to rush that. So we stuck with my questionable typographic treatment for the blog post.

    (Edit: autocorrect typo)

    (this looks fantastic btw, I’m definitely going to explore it more in depth. thank you a TON for releasing it!)

    Also not a physicist FWIW

    That project experimented with a lot of interesting themes I see echoed here.

    It’s nice know that your report actually worked, and is not showing something odd because of a hidden state, but sometimes you just want to print the darn thing now!

    The server use case is real, though. Users typically like to run it on a beefy cloud machine with access to a Spark cluster.

    For you they are not meant that way. But other people started using them that way. Netflix is a well known place for this workflow.

    I mean something like these:

    My vision is separating financial analysis from formatting, or bringing CSS / markup languages into the world of Excel and sidestepping PowerPoint entirely if possible

    PowerPoint is a slide presentation tool that is sadly used for authoring so-called «books» with lots of formatting in Investment Banking, Management Consulting and Corporate America at large. and its shortcomings become immediately obvious

    As we speak (. ), I’m having to reformat a book from our standard template into the client’s template by manually resizing charts, recoloring series, etc. literally wasting hours of my time because we use Excel + PPT

    And then the task would just be mapping the data generated to the templates, mad lib style?

    A lot of people just don’t have an intuitive sense for design or plain don’t care, so you’re left with a high variance in the quality of the work that is produced. Speaking from my banking experience, the result is senior bankers have to spend time marking up documents on things like formatting, and junior bankers feel frustrated because they waste their productive hours on non-productive work. And it’s generally a frustrating experience indeed as the tools we use aren’t built for this purpose.

    But formatting is just part of it. «Code» reusability (more like financial model reusability) is basically zero, auditing is a pain and people use many different approaches to do the same things, but again with varying levels of efficiency and accuracy. I can tell you 10 ways to calculate Total Shareholder Returns for a public company using the FactSet add-in in Excel. Also several ways to pull Revenue and EBITDA figures, and these aren’t even the more esoteric metrics like Free Cash Flow or Funds from Operations.

    These decks that we prepare should work like recipes. Input the ingredients and out comes the prepared dish, but everything is so god damn manual

    Not to mention issues with Excel itself, like how Excel’s (non-cascading) styles and defined names (similar to variables) propagate to other workbooks if you copy-paste content from one to another, which in the long-term creates files full of garbage that crash and corrupt frequently

    The whole paradigm is a shit show. One day it will be different, I am certain. But nobody has taken a holistic, multi-disciplinary view at the problem because bankers / consultants don’t know what is possible with today’s technology and the ones trying to address these usability issues are only looking at a couple pieces of the puzzle at once

    As I understand it, financial companies often want to gather data from multiple places but consolidated in a digestible form to make financial decisions. (what kind of financial decisions, I’m unclear on, since most trading is done by computers now, but maybe this is for ETFs or OTC trades) And they’re use to looking at it on PDFs and Powerpoint, because that’s what people email around, and no one trusts having financial slides on the web. (why, btw? In case they leak?) And because you have many clients that want the same or similar sort of analysis on publicly traded companies, you’d ideally be able to change the analysis once, and then generate all the PDF and PPT reports they want to see.

    It does seem like a giant waste of time to cut and paste data from excel into powerpoint by hand. However, you should be able to export Excel data to Power Point via the Visual Basic Editor. (https://www.wallstreetmojo.com/vba-powerpoint/) Do people not use VB to prepare this?

    I don’t get the impression that analysts in finanace would be willing to move from Excel to a notebook. Do you get a different sense? What would a notebook have to offer to get them to switch? Analysts generally seem to love Excel, with the exception of the slow first load and crash.

    Yes, this is spot on.

    > (what kind of financial decisions, I’m unclear on, since most trading is done by computers now, but maybe this is for ETFs or OTC trades)

    Sales & Trading is but one part of banking. Yes, a lot of S&T is automated, but long-term strategy isn’t defined by computers and neither is pitching to win new businesses. Besides S&T, there’s also Restructuring (advisory and financing) and Mergers & Acquisitions. My opinion is written from the perspective of an M&A banker. I probably make

    3-4 PPT books every week on average.

    > And they’re use to looking at it on PDFs and Powerpoint, because that’s what people email around, and no one trusts having financial slides on the web. (why, btw? In case they leak?)

    Concerns over leaks is certainly a driver, but traceability and auditing also play a role. 3 years from now, I can certainly retrieve info that was attached to an e-mail but a link may have long expired. Also most recipients are over the age of 40 so might not like using links in general

    Мастер Йода рекомендует:  5 занимательных проектов, реализованных на CSS без использования JavaScript

    > It does seem like a giant waste of time to cut and paste data from excel into powerpoint by hand. However, you should be able to export Excel data to Power Point via the Visual Basic Editor. (https://www.wallstreetmojo.com/vba-powerpoint/) Do people not use VB to prepare this?

    Certain tools like the add-ins provided by FactSet, S&P’s Capital IQ and, less commonly, Bloomberg, export data into PPT with some metadata attached to it that allows you to refresh content quickly (in theory). It’s all built as plugins on top of MS Office apps so your experience is not always smooth. Plus they don’t solve the bigger issue of reusability

    > I don’t get the impression that analysts in finanace would be willing to move from Excel to a notebook. Do you get a different sense? What would a notebook have to offer to get them to switch? Analysts generally seem to love Excel, with the exception of the slow first load and crash.

    I think Analysts like spreadsheets with very responsive UIs and countless hotkeys. Muscle memory is a major thing in this business.

    My vision of a solution would be one that still implements spreadsheet-like functionality but does so in pieces that connect together all the way through publishing via an integrated paradigm

    10 лучших текстовых редакторов для Linux

    Oleg Koptev

    Read more posts by this author.

    Oleg Koptev

    В этой статье мы рассмотрим 10 лучших редакторов текста для Linux. Некоторые из них являются не просто редакторами, но представляют собой интегрированные среды разработки (IDE), что делает их полезными в деле разработки приложений под Linux. Конечно же, текстовых редакторов существует великое множество, однако мы постарались отобрать 10 лучших на наш взгляд. Ну что же, довольно слов, перейдём к делу!

    1. VIM

    Если вы устали от используемого по умолчанию в Linux редактора vi и хотите выполнять редактирование текста в продвинутом, мощном редакторе, имеющем множество функций, тогда vim будет лучшим вариантом. Как можно догадаться из названия (VIM — означает «vi improved» (улучшенный vi), это расширенная версия стандартного для Linux редактора текста. Он создавался специально с расчётом на потребности разработчиков. Благодаря своим очень широким возможностям настройки его также называют редактором для программистов. Также, как и редактор vi он может использоваться либо в командной строке, либо как отдельное приложение в графическом интерфейсе пользователя.

    Некоторые уникальные особенности VIM:

    • Подсветка синтаксиса
    • Система меток
    • Расширение вкладок
    • Экран сессии
    • Разбивка экрана
    • Ввод составных символов
    • Автоматические команды (макросы)

    2. Geany

    Geany — один из самых популярных редакторов текста для Linux, который поставляется с встроенным набором утилит GTK+. Кроме того, он выступает в качестве прекрасной среды разработки для программистов и разработчиков. Если вы ищете редактор текста, который при этом обладает функционалом IDE, то Geany вас не разочарует. Этот лёгкий редактор поддерживает практически все основные языки программирования и не имеет множества зависимостей от других пакетов.

    Для установки Geany на Ubuntu/Linux Mint выполните следующие действия:

    Некоторые из особенностей Geany включают в себя:

    • Лёгкий в использовании и понятный интерфейс
    • Подсветка синтаксиса
    • Множество настроек
    • Нумерация строк для быстрого отслеживания кода
    • Поддержка плагинов

    3. Sublime Text Editor

    Текстовый редактор Sublime является ещё одним популярным приложением для работы с текстом в Linux. Он имеет множество функций и предназначен для использования как в качестве обычного редактора текста, так и в качестве IDE. Имеет поддержку множества языков программирования и языков разметки. Благодаря наличию огромного количества плагинов вы сможете значительно расширить его функциональность. Одной из уникальных особенностей этого редактора является функция перехода к любому участку кода любого файла в вашей системе.

    Для установки стабильной версии Sublime Text Editor на Ubuntu/Linux Mint выполните следующие действия:

    Для установки Sublime Text Editor на CentOS 7.x/RHEL 7.x:

    А вот и некоторые другие уникальные возможности Sublime Text Editor:

    • Превосходная панель комманд
    • API плагинов на основе Python
    • Параллельное редактирование кода
    • Отдельные настройки для каждого проекта

    4. Brackets

    Компания Adobe выпустила текстовый редактор для Linux под названием Brackets в 2014 году. Этот текстовый редактор с открытым исходным кодом имеет множество восхитительных особенностей, благодаря которым работать с ним по-настоящему здорово. Кроме того, он лёгок в использовании и имеет очень понятный интерфейс. Он создавался для работы как с простым текстом, так и как средство работы с исходным кодом, как инструмент для программистов и веб-дизайнеров. Он полностью создан на HTML, CSS и JavaScript. Редактор имеет небольшой размер, но при этом способен потягаться с некоторыми лучшими редакторами, имеющими продвинутые функции.

    Для установки Brackets на Ubuntu/Linux Mint выполните следующие действия:

    Некоторые из особенностей текстового редактора Brackets включают в себя:

    • Просмотр в режиме реального времени
    • Инлайн-редактирование
    • Визуальные инструменты
    • Поддержка пре-процессора

    5. Gedit

    Если вы работаете в окружении рабочего стола GNOME, то по умолчанию в вашей системе установлен текстовый редактор Gedit. Gedit следует общей цели проекта GNOME всегда предоставлять ясный и простой в использовании функционал, он имеет небольшой размер и простой интерфейс. Первая версия увидела свет в 2000 году, вместе с окружением рабочего стола GNOME. Он создан на языке программирования C и имеет полную поддержку разных языков ввода.

    Некоторые уникальные функции Gedit:

    • Подсветка синтаксиса
    • Поддержка различных алфавитов
    • Поддержка разных языков программирования

    6. Kate

    Если вы знакомы с Kubuntu, то вы наверняка знакомы и с текстовым редактором Kate, который является текстовым редактором по умолчанию в Kubuntu. Это лёгкий и простой в использовании редактор текста. В Kate можно одновременно работать с несколькими файлами. Также он может использоваться как мощная среда разработки.

    Шаги по установке Kate на Ubuntu/Linux Mint

    Некоторые уникальные особенности Kate:

    • Мощная среда разработки (IDE)
    • Поддержка множества языков
    • Автоматическое определение языка
    • Автоматическая расстановка отступов в документах

    7. Eclipse

    Фронт-энд разработчики и дизайнеры, ищущие надёжный и продвинутый редактор текста/кода могут с уверенностью выбрать редактор Eclipse. Он популярен среди многих Java-разработчиков, поскольку и сам полностью создан на Java и содержит много функций для поддержки написания приложений на этом языке. Если вам требуется поддержка других языков, то нужно будет всего лишь установить дополнительные плагины. Благодаря плагинам, IDE Eclipse становится ещё более мощным инструментом, обладающим множеством продвинутых функций. Он может использоваться для разработки на PHP, Python, C, C++, Ruby on Rails, COBOL и др.

    Для установки Eclipse на Ubuntu/Linux Mint выполните следующие действия:

    Некоторые уникальные особенности Eclipse:

    • Бесплатный редактор с открытым исходным кодом
    • Инструменты для Java-разработчиков
    • Поддержка плагинов

    8. Kwrite

    Текстовый редактор Kwrite разработан командой KDE, его первая версия вышла в свет в 2000 году. Он полностью основан на коде редактора Kate и включает в себя технологию KParts от KDE. С помощью установки дополнительных плагинов можно значительно расширить функциональность Kwrite и сделать его более мощным окружением для разработки. Так же он может использоваться для редактирования удалённых файлов с шифрованием.

    Для установки Kwrite на Ubuntu/Linux Mint выполните следующее:

    Некоторые уникальные особенности Kwrite:

    • Автозавершение слов
    • Автоматическая расстановка отступов
    • Подсветка синтаксиса
    • Режим ввода vi

    9. Nano

    Nano — ещё один популярный текстовый редактор для систем UNIX. Он похож на рекдактор Pico. Первая версия вышла в 2000 году. Он также имеет множество дополнительных функций, которые делают его мощным и продвинутым текстовым редактором. Nano может выполняться только в интерфейсе командной строки.

    Некоторые уникальные особенности Nano:

    • Поиск, чувствительный к регистру символов
    • Автоматические отступы
    • Автоматическое завершение слов
    • Поддержка Autoconf

    10. GNU Emacs

    GNU Emacs — один из самых старых текстовых редакторов для Linux. Он был разработан Ричардом Столлманом, основателем проекта GNU. Emacs используется тысячами программистов Linux по всему миру и является одним из самых любимых редакторов. Он написан полностью на LISP и C.

    Для установки Emacs на Ubuntu / Linux Mint выполните следующие действия:

    Некоторые уникальные особенности GNU Emacs:

    • Работа с почтой и новостными рассылками
    • Расширение с интерфейсом дебаггера
    • Расширенная документация и поддержка

    10 лучших >

    • Сайтостроение
    • Статьи
    • Веб-программирование

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

    Чем IDE отличается от текстового редактора?

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

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

    Ознакомьтесь с приведенным ниже списком функций и недостатков каждой из 10 лучших IDE .

    1. Microsoft Visual Studio

    Microsoft Visual Studio — это интегрированная среда разработки , цена которой варьируется от $699 до $2900 . Множество версий этой >Visual Studio является отличным инструментом для студентов и профессионалов.

    Поддерживаемые языки: Ajax, ASP.NET, DHTML, JavaScript, JScript, Visual Basic, Visual C#, Visual C++, Visual F#, XAML и другие .

    • Огромная библиотека расширений, которая постоянно увеличивается;
    • IntelliSense ;
    • Настраиваемая панель и закрепляемые окна;
    • Простой рабочий процесс и файловая иерархия;
    • Статистика мониторинга производительности в режиме реального времени;
    • Инструменты автоматизации;
    • Легкий рефакторинг и вставка фрагментов кода;
    • Поддержка разделенного экрана;
    • Список ошибок, который упрощает отладку;
    • Проверка утверждения при развертывании приложений с помощью ClickOnce , Windows Installer или Publish Wizard.

    Недостатки : поскольку Visual Studio является супертяжелой IDE , для открытия и запуска приложений требуются значительные ресурсы. Поэтому на некоторых устройствах внесение простых изменений может занять много времени. Для простых задач целесообразно использовать компактный редактор или средство разработки PHP .

    2. NetBeans

    Бесплатная среда разработки с открытым исходным кодом. Подходит для редактирования существующих проектов или создания новых. NetBeans предлагает простой drag-and-drop интерфейс, который поставляется с большим количеством удобных шаблонов проектов. Среда в основном используется для разработки Java приложений, но можно устанавливать пакеты, поддерживающие другие языки.

    Поддерживаемые языки программирования: C, C++, C++ 11, Fortan, HTML 5, Java, PHP и другие .

    • Интуитивный drag-and-drop интерфейс;
    • Динамические и статические библиотеки;
    • Интеграция нескольких сессий GNU-отладчика с поддержкой кода;
    • Возможность осуществлять удаленное развертывание;
    • Совместимость с платформами Windows, Linux, OS X и Solaris;
    • Поддержка Qt Toolkit;
    • Поддержка Fortan и Assembler;
    • Поддержка целого ряда компиляторов, включая CLang / LLVM, Cygwin, GNU, MinGW и Oracle Solaris Studio.

    Недостатки: эта бесплатная среда разработки потребляет много памяти, поэтому может работать медленно на некоторых ПК.

    3. PyCharm

    PyCharm разработан командой Jet Brains . Пользователям предоставляется бесплатная версия Community Edition , 30-дневная бесплатная ознакомительная версия Professional Edition и годовая подписка за $213 — $690 на версию Professional Edition . Комплексная поддержка кода и анализ делают PyCharm лучшей IDE для Python-программистов .

    Поддерживаемые языки: AngularJS, Coffee Script, CSS, Cython, HTML, JavaScript, Node.js, Python, TypeScript.

    • Совместимость с операционными системами Windows, Linux и Mac OS;
    • Поставляется с Django IDE;
    • Легко интегрируется с Git, Mercurial и SVN;
    • Настраиваемый интерфейс с эмуляцией VIM;
    • Отладчики JavaScript, Python и Django;
    • Поддержка Google App Engine.

    Недостатки: пользователи жалуются, что эта среда разработки Python содержит некоторые ошибки, такие как периодически не работающая функция автоматического заполнения, что может доставить определенные неудобства.

    4. IntelliJ IDEA

    Еще одна IDE , разработанная Jet Brains . Она предлагает пользователям бесплатную версию Community Edition , 30-дневную бесплатную ознакомительную версию Ultimate Edition и годовую подписку на версию Ultimate Edition за $533 — $693 . IntelliJ IDEA поддерживает Java 8 и Java EE 7 , обладает обширным инструментарием для разработки мобильных приложений и корпоративных технологий для различных платформ. Если говорить о цене, IntelliJ является прекрасным вариантом из-за огромного списка функций.

    Поддерживаемые языки программирования: AngularJS, CoffeeScript, HTML, JavaScript, LESS, Node JS, PHP, Python, Ruby, Sass, TypeScript и другие.

    • Расширенный редактор баз данных и дизайнер UML ;
    • Поддержка нескольких систем сборки;
    • Пользовательский интерфейс тестового запуска приложений;
    • Интеграция с Git ;
    • Поддержка Google App Engine , Grails , GWT , Hibernate , Java EE , OSGi , Play , Spring , Struts и других;
    • Встроенные средства развертывания и отладки для большинства серверов приложений;
    • Интеллектуальные текстовые редакторы для HTML , CSS и Java ;
    • Интегрированный контроль версий;
    • AIR Mobile с поддержкой Android и iOS .

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

    5. Eclipse

    Бесплатный и гибкий редактор с открытым исходным кодом. Он может оказаться полезен, как для новичков, так и для профессионалов. Первоначально создаваемый как среда для Java-разработки сегодня Eclipse имеет широкий диапазон возможностей благодаря большому количеству плагинов и расширений. Помимо средств отладки и поддержки Git / CVS , стандартная версия Eclipse поставляется с инструментами Java и Plugin Development Tooling . Если вам этого недостаточно, доступно много других пакетов: инструменты для построения диаграмм, моделирования, составления отчетов, тестирования и создания графических интерфейсов. Клиент Marketplace Eclipse открывает пользователям доступ к хранилищу плагинов и информации.

    Поддерживаемые языки: C, C++, Java, Perl, PHP, Python, Ruby и другие.

    • Множество пакетных решений, обеспечивающих многоязычную поддержку;
    • Улучшения Java IDE , такие как иерархические представления вложенных проектов;
    • Интерфейс, ориентированный на задачи, включая уведомления в системном трее;
    • Автоматическое создание отчетов об ошибках;
    • Параметры инструментария для проектов JEE ;
    • Интеграция с JUnit .

    Недостатки: многие параметры этой среды разработки могут запугать новичков. Eclipse не обладает всеми теми функциями, что и IntelliJ IDEA , но является IDE с открытым исходным кодом.

    6. Code::Blocks

    Еще один популярный инструмент с открытым исходным кодом. Гибкая IDE , которая стабильно работает на всех платформах, поэтому она отлично подходит для разработчиков, которые часто переключаются между рабочими пространствами. Встроенный фреймворк позволяет настраивать эту IDE под свои потребности.

    Поддерживаемые языки: C, C++, Fortran .

    • Простой интерфейс с вкладками открытых файлов;
    • Совместимость с Linux , Mac и Windows ;
    • Написана на C++ ;
    • Не требует интерпретируемых или проприетарных языков программирования;
    • Множество встроенных и настраиваемых плагинов;
    • Поддерживает несколько компиляторов, включая GCC, MSVC ++ , clang и другие;
    • Отладчик с поддержкой контрольных точек;
    • Текстовый редактор с подсветкой синтаксиса и функцией автоматического заполнения;
    • Настраиваемые внешние инструменты;
    • Простые средства управления задачами, идеально подходящие для совместной работы.

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

    7. Aptana Studio 3

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

    Поддерживаемые языки: HTML5, CSS3, JavaScript, Ruby, Rails, PHP и Python .

    • Подсказки для CSS , HTML , JavaScript , PHP и Ruby ;
    • Мастер развертывания с простой настройкой и несколькими протоколами, включая Capistrano , FTP , FTPS и SFTP ;
    • Возможность автоматической установки созданных приложений Ruby и Rails на серверы хостинга;
    • Интегрированные отладчики для Ruby и Rails и JavaScript ;
    • Интеграция с Git ;
    • Простой доступ к терминалу командной строки с сотнями команд;
    • Строковые пользовательские команды для расширения возможностей.

    Недостатки: есть проблемы со стабильностью, и она работает медленно. Поэтому профессиональные разработчики могут предпочесть более мощную HTML среду разработки.

    8. Komodo

    Предлагает бесплатную 21-дневную ознакомительную версию, полная версия стоит $99 – $1615 в зависимости от редакции и лицензии. Komodo поддерживает большинство основных языков программирования. Удобный интерфейс позволяет осуществлять расширенное редактирование, а небольшие полезные функции, такие как проверка синтаксиса и одноступенчатая отладка, делают Komodo одной из самых популярных IDE для веб и мобильной разработки.

    Мастер Йода рекомендует:  Как установить шрифт в Photoshop

    Поддерживаемые языки: CSS, Go, JavaScript, HTML, NodeJS, Perl, PHP, Python, Ruby, Tcl и другие.

    • Настраиваемый многооконный интерфейс;
    • Интеграция контроля версий для Bazaar , CVS , Git , Mercurial , Perforce и Subversion ;
    • Профилирование кода Python и PHP ;
    • Возможность развертывания в облаке благодаря Stackato PaaS ;
    • Графическая отладка для NodeJS , Perl , PHP , Python , Ruby и Tcl ;
    • Автоматическое заполнение и рефакторинг;
    • Стабильная производительность на платформах Mac , Linux и Windows

    Недостатки: бесплатная версия среды разработки программного обеспечения не включает в себя все функции. В то же время премиум версия явно стоит своих денег.

    9. RubyMine

    Еще одна премиум IDE , разработанная компанией Jet Brains . Предлагается 30-дневная бесплатная ознакомительная версия, полная версия стоит $210 — $687 в год. Удобная навигация, логичная организация рабочего процесса и совместимость с большинством платформ делают RubyMine одним из популярных инструментов для разработчиков.

    Поддерживаемые языки: CoffeeScript, CSS, HAML, HTML, JavaScript, LESS, Ruby и Rails, Ruby и SASS.

    • Сниппеты кода, автоматическое заполнение и автоматический рефакторинг;
    • Дерево проектов, которое позволяет быстро анализировать код;
    • Схема модели Rails ;
    • Просмотр проекта Rails ;
    • RubyMotion поддерживает разработку под iOS ;
    • Поддержка стека включает в себя Bundler , pik , rbenv , RVM и другие;
    • Отладчики JavaScript , CoffeeScript и Ruby ;
    • Интеграция с CVS , Git , Mercurial , Perforce и Subversion .

    Недостатки среды разработки: чтобы RubyMine работала бесперебойно, компьютеру требуется не менее 4 ГБ оперативной памяти. Некоторые пользователи также жалуются на отсутствие опций настройки GUI .

    10. Xcode

    Набор инструментов для создания приложений под iPad , iPhone и Mac . Интеграция с Cocoa Touch делает работу в среде Apple простой, вы можете включать такие сервисы, как Game Center или Passbook , одним кликом мыши. Встроенная интеграция с сайтом разработчика помогает создавать полнофункциональные приложения « на лету ».

    Поддерживаемые языки: AppleScript, C, C++, Java, Objective-C.

    • Элементы пользовательского интерфейса можно легко связать с кодом реализации;
    • Компилятор Apple LLVM сканирует код и предоставляет рекомендации по решению проблем производительности;
    • Панель навигации обеспечивает быстрое перемещение между разделами;
    • Interface Builder позволяет создавать прототипы без написания кода;
    • Пользовательский интерфейс и исходный код можно подключить к сложным прототипам интерфейсов всего за несколько минут;
    • Редактор версий включает в себя файлы журнала и хронологии;
    • Распределение и объединение процессов удобно при командной работе;
    • Test Navigator позволяет быстро тестировать приложения в любой момент разработки;
    • Автоматически создает, анализирует, тестирует и архивирует проекты благодаря интеграции с сервером OX X ;
    • Рабочий процесс настраивается с помощью вкладок, поведения и фрагментов;
    • Библиотека инструментов и каталог ресурсов.

    Недостатки инструментальной среды разработки: для запуска Xcode нужен компьютер от компании Apple . А для загрузки создаваемых приложений в Apple Store — лицензия разработчика.

    Выбор подходящей IDE

    Какая IDE окажется лучшей именно для вас зависит от используемой операционной системы, языка программирования и тех платформ, которые вы хотите развивать.

    Пропустили ли мы какие-нибудь важные IDE ? Напишите об этом в комментариях.

    Данная публикация представляет собой перевод статьи « Best IDE Software – a List of the Top 10 » , подготовленной дружной командой проекта Интернет-технологии.ру

    PlatformIO – замена Arduino IDE

    Данная статья – первая из цикла по великолепному фреймворку PlatformIO. Тут мы рассмотрим недостатки Arduino IDE, установим PlatformIO и загрузим программу для мигания светодиодом.

    Почему Arduino IDE – говно?

    Arduino IDE – как многие думают, единственный редактор кода для Arduino, ESP и прочих совместимых плат. Однако вы ошибаетесь, ведь относительно недавно в свет вышла замечательная альтернатива – PlatformIO.

    PlatformIO – это open-source экосистема для разработки на Arduino. Поддерживает множество платформ, с подробным списком которых вы можете ознакомиться на официальном сайте, скажу лишь, что в нем присутствуют все основные популярные микроконтроллеры.

    Почему Arduino IDEблядская срань демоническо-сектантского происхождения, которая призвана, чтобы портить жизнь всем и каждому? Есть множество косяков, за которые мы можем ее не любить:

      • Отсутствие какой-либо кастомизации (темы, подсветка синтаксиса)
      • Отсутствие автодополнения кода
      • Неудобная организация проектов
      • Отсутствие поддержки каких-либо плагинов
      • Неудобный менеджер библиотек
      • Отвратительный build-output, с которым вы хрен поймете, где ошибка
      • Прочие косяки

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

    Как установить и настроить?

    Выбираем > Установка простая, а сам фреймворк распространяется на бесплатной основе.

    Для начала вы должны определиться, какой редактор вы будете использовать. Тут два распространенных варианта – Visual Studio Code (не путать с оригинальной Visual Studio, так как эта, в отличие от своей матери, мало весит и шустро работает), либо Atom. Если вы хотите больше кастомизации, всяких крутых плагинов и экспериментов – выбирайте Atom, если же вам нужно просто красивую, удобную IDE с отличным автодополнением кода из коробки, выбирайте Visual Studio Code.

    Путеводитель по редакторам исходного кода

    Sublime Text — мультиплатформенный редактор (Linux, Mac OS, Windows). Цена лицензии — $70, но бесплатная версия работает без ограничений.

    Из первичных возможностей нужно отметить базовую поддержку нескольких десятков языков программирования и разметки: HTML, CSS, Ruby, PHP, SQL, Javascript, C и других. Для поддерживаемых форматов предусмотрена подсветка синтаксиса и автодополнение.

    Для более тесной интеграции Sublime Text с языком (например, с jQuery, Ruby, C) можно установить расширения. Среди наиболее полезных: SideBarEnhancements, Emmet, SublimeGDB, SFTP. Расширения инсталлируется в Sublime Text через командную палитру с помощью модуля Package Control.

    Одна из наиболее интересных функций Sublime Text — мультивыделение, что позволяет редактировать несколько участков кода одновременно. Для этого достаточно нажать Ctrl и установить курсор на тех участках, где нужно ввести данные, или Alt + F3. Для редактирования нескольких строк можно нажать Ctrl+Shift+L и передвинуть курсор в нужное место.

    В ST широкие поисковые возможности. Помимо поиска по файлу, можно быстро перемещаться по всему проекту, например:

    • Ctrl + R — переход к символу (@)
    • Ctrl + G — переход к строке (:)
    • Ctrl + P — переход к файлу

    Для того чтобы сосредоточиться на написании кода, можно перейти в режим Distraction Free Mode (Shift + F11). При этом останется доступной карта файла, также будет возможно переключаться между вкладками (Alt + цифра) или поменять режим отображения.

    Работая в Sublime Text, написание кода также можно ускорить за счет сниппетов и макросов. Сниппеты — фрагменты часто используемого кода, которые вставляются посредством автодополнения. Макросы применяются для воспроизведения последовательности действий.

    Из других особенностей интерфейса — боковая панель, которая ускоряет доступ к файлам и проектам. Удобны сессии вкладок: можно закрыть Sublime Text, и при следующем запуске редактора вкладок будут в состоянии, сохраненном при закрытии.

    Пожалуй, у Sublime Text два заметных неудобства: невозможность локализации и отсутствие графического окна с настройками. Обе проблемы, впрочем, мало обременят программиста. Посредством редактирования текстовых файлов конфигурации настройке поддается абсолютно все (см. раздел «Preferences» в меню). Можно сменить тему оформления, цветовую схему, настроить расширения, горячие клавиши и т. д.

    Intype

    Intype — текстовый редактор, который, на первый взгляд, ничем интересным не отличается. Однако неплохая базовая функциональность в связке с легким и аккуратным интерфейсом найдет своих сторонников.

    Поддерживаемых языков немного, около 20. Для работы с ними предусмотрены сборки (bundles), предполагающие подсветку кода, сниппеты, а также проверку правописания. Есть специальный редактор, в котором легко посмотреть имеющиеся сниппеты, изменить их или соответствующие им триггеры (сокращенные фразы).

    Как и в Sublime Text, есть мультивыделение и режим «умного» выделения в колонках. Увы, команд редактирования самый минимум, и вместо указанных функций было бы рациональней добавить хотя бы возможность закомментировать строку.

    Из особенностей интерфейса: Intype, помимо вкладок и сессий, также предоставляет боковую панель, куда можно перенести любые файлы и папки для дальнейшего использования, например, в проекте. Имеется режим Distraction Free (F11), при его активации отображается лишь поле редактирования и линейка. Тем самым, от написания кода на экране ничего не отвлекает.

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

    Из других минусов: нет поддержки расширений, очень мало настроек. Как работает автодополнение — непонятно, а где искать документацию — тоже вопрос. Не очень привлекательной выглядит цена в 42 евро, которую пользователь платит, скорее, за минимализм. Ведь если сравнивать с Sublime Text, разрыв по функциональности огромный.

    PSPad

    В отличие от минималистичных по интерфейсу редакторов Intype или Programmer’s Notepad (см. ниже), иконка в меню есть практически для каждой команды, что при работе с графической оболочкой — дополнительный плюс. Можно возразить, что предпочтительней использовать горячие клавиши, но и такие моменты важны.

    Боковая панель PSPad — наиболее функциональная среди рассматриваемых редакторов. С ее помощью можно не только управлять проектами, но и настроить синхронизацию. Также в панели доступны элементы избранного, менеджер файлов и даже FTP-менеджер.

    Среди стандартных возможностей — макросы, шаблоны (здесь так называются сниппеты). Подсветка парных скобок, автодополнение — в наличии, правда, реализовано последнее не самым лучшим образом: очень неудобное меню.

    PSPad будет интересен HTML(XML)-верстальщикам, поскольку в данный редактор встроен CSS-редактор TopStyle Lite и известная библиотека Tidy, которая позволяет оптимизировать код. Также доступна валидация и другие инструменты для верстки.

    Тем не менее, форматирование HTML — не главный профиль PSPad. Так, из дополнительных инструментов можно обнаружить HEX-режим, хеш-генератор, генератор текста, сравнение текстовых файлов и множество других модулей. Очень востребованная возможность — проводник кода, который выводит список переменных, классов, функций и т. п. в виде дерева (Shift+Ctrl+E). Поиск доступен не только внутри файла, но и внутри определенной папки.

    Доступно несколько десятков расширений в форматах .VBS и .JS.

    Из замеченных недостатков: PSPad редко обновляется — но, тем не менее, актуальные обновления можно загрузить с форума.

    Notepad++

    Notepad++ обладает классическим набором возможностей для работы с кодом: автодополнение функций, параметров и слов, подсветка. Сюда же входят операции со строками, в том числе комментирование, преобразование текста. Характерная особенность Notepad++ — возможность применения токенов (шаблонов) стилей кода. Помимо стандартной нумерации строк, предполагается сворачивание кода (фолдинг), доступное не в каждом редакторе.

    Notepad++ основан на базе редакторского компонента Scintilla, однако ожидать разительного сходства не следует. С точки зрения удобства, Notepad++ многим пользователям покажется наиболее привычным и понятным редактором. Это уже ставшие стандартом де факто вкладки, сохранение сессий, а также возможность смены режима интерфейса, поддержка огромного количества кодировок, поиск с использованием регулярных выражений, запись и воспроизведение макросов.

    К Notepad++ написано немало плагинов (в состав дистрибутива некоторые из них уже включены). При желании, можно найти аналогичные Sublime Text дополнения (Zen Coding — Emmet, NppFTP — SFTP, и т. д.). Хотя если сравнивать Sublime Text и Notepad++, решающая разница между ними — все же не по функциональности, а по удобству. Notepad++ удобней осваивать, не вдаваясь в подробности документации и редактирование текстовых файлов конфигурации. Также не нужно забывать, что Notepad++ был и остается бесплатной программой.

    SciTE

    Кроссплатформенный редактор также берет свое начало из компонента редактирования Scintilla. Это предполагает подсветку синтаксиса и автодополнение функций и переменных для наиболее популярных языков программирования. Также возможно сворачивание кода, подсветка парных скобок, автоматические отступы.

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

    Есть возможность интегрировать SciTE с компиляторами, поддерживается консоль для вывода результатов. Консоль удобно использовать для отладки кода, просмотра ошибок (Python, GCC, Visual C++, Borland C++ и т. п.). Есть поддержка расширений.

    Интерфейс позволяет работать с вкладками и сессиями. Так или иначе, удобство графического интерфейса вызывает сомнения: сложно управлять обширным списком команд в меню. Поэтому, как вариант, можно посоветовать модификацию SciTE. Ее особенности — не только более дружелюбный интерфейс, но и поддержка русского языка, переведенная документация, расширенные возможности, дополнительные скрипты и утилиты.

    Programmer’s Notepad

    На раннем этапе развития Programmer’s Notepad взял за основу компонент Scintilla, поэтому в нем присутствуют сворачивание кода, цветовые схемы и прочие функции, упомянутые при описании SciTE.

    Интерфейс удобный, за некоторыми оговорками. Во-первых, вместо не так часто используемых кнопок (копировать/вставить/вырезать) логичней было бы предусмотреть более «программистский» набор. Панель инструментов приходится перенастраивать. Вторая оговорка — отсутствие удобной боковой панели, при активации нескольких окон (Вид → Окна) рабочее окно отвлекает от работы ввиду своей громоздкости. Из положительных моментов — в настройках можно разделить окно по горизонтали или вертикали.

    Наибольший интерес представляет диалог настроек с грамотным разделением опций: настройка горячих клавиш, автодополнения, стилей, схем, файловых ассоциаций и т. д. Это позволяет гибко настроить Notepad на свое усмотрение. Есть возможность смены локализации на русский. Цветовые схемы — переопределяемые: их можно перенастраивать, причем нашлось отдельное место продвинутым настройкам.

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

    EditPlus

    Редактор платный, цена лицензии — $35.

    EditPlus изначально поддерживает форматы HTML, CSS, PHP, ASP, Perl, C/C++, Java, JavaScript и VBScript, но можно расширить список. Файлы STX отвечают за синтаксис, ACP — автодополнение, CTL — сниппеты (доступны через Cliptext Window, Alt + Shift + 1).

    В EditPlus изначально есть функции, которые в других редакторах доступны виде модулей: например, поддержка SVN (Subversion — контроль версий) и FTP-менеджер (нет надобности синхронизировать файлы проекта вручную). К сожалению, в данном менеджере нет никакого намека на протокол SFTP.

    Также в редакторе можно обнаружить рабочий модуль ZenCoding. С его помощью легко задать структуру HTML-документа без копирования/вставки тегов, составив запрос буквально из одной короткой строки. Помимо того, для работы с HTML в EditPlus предусмотрена отдельная панель инструментов, встроенный браузер. Заметно, что под этот язык разметки EditPlus адаптирован в большей степени, чем под другие форматы. Хотя у него есть и другие инструменты, вроде HEX-редактора, но их не так много.

    Настроек в EditPlus несоизмеримо меньше, чем функций (о чем свидетельствует диалог настроек). Из других замеченных неудобств: нет официальной поддержки русского языка, нет расширений.

    Сводная таблица

    Программа Лицензия Поддержка расширений Локализация (официальная) Поддержка платформ
    Sublime Text Proprietary software, 70 долларов + Windows, Mac OS, Linux
    Intype Shareware, 42 евро Windows
    PSPad Freeware + + Windows
    Notepad++ Freeware + + Windows
    SciTE Freeware + Windows, Linux
    Programmer’s Notepad Freeware + + Windows
    EditPlus Proprietary EULA, 35 долларов Windows

    Резюме

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

    Intype придется по вкусу пользователям, которые работают с очень небольшими проектами и привыкли использовать самый минимальный набор возможностей — подсветку кода, автодополнение и т. п.

    Отличительная черта PSPad — наличие удобных инструментов для различных языков. Это делает его наиболее универсальным редактором, который по функциональности может на равных соперничать с Sublime Text.

    Notepad++ — редактор исходного кода с удобным интерфейсом, с богатым инструментарием по редактированию кода и широкой поддержкой плагинов.

    SciTE — наиболее сложный в настройке редактор, который требует тщательного изучения документации. Впрочем, русскоязычная сборка многие сложности упрощает.

    Programmer’s Notepad — редактор с базовой функциональностью, гибкий в настройке. Не обновляется с 2011 года.

    EditPlus содержит базовые функции редактора исходного кода, а также FTP и SVN «из коробки». Будет оптимален HTML-верстальщикам.

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

    Добавить комментарий