• Мнения: Swift стал Open Source
    +1
    Пост — ни о чем. Похоже, отделу маркетинга нужно было выполнить план по написанию постов, и они заставили бедного Игоря написать хоть что-то.
  • Раз плюнуть: обзор и результаты генетического теста Атлас и дайджест основных ДНК-тестов в России и мире
    0
    Ну вот, хотел посмотреть о не-довоенных методах тренировок, а теперь и единственный упомянутый источник оказался не таким уж и надежным. Может вы посоветуете что?
  • Как выбрать язык программирования?
    0
    Странно, что вы не добавили maintainability в список показателей.
  • Что нового в Ruby 2.3
    0
    Проблема безопасной навигации (или композиции функций) в том, что есть некое супер-значение, которое населяет все типы и ведет себя отлично от других граждан этого типа отказываясь отвечать на ожидаемые сообщения (если вы не в Objective-C или SmallTalk, где nil принимает любое сообщение и возвращает себя же). Поговаривают, что индустрия разработки программного обеспечения из-за этого потеряла как минимум миллиард долларов.

    Наряду с тем, что добавили в Ruby, иной популярный способ избавиться от злополучного гражданина — явно указывать, что значение может отсутствовать. Обычно такой тип называет Option, или Maybe. На мой взгляд, это решение лучше потому, что программист точно знает, что в этом месте может ничего не быть и остаток цепочки не выполнится. К сожалению, добавить Option в язык ретроспективно не очень просто, а в язык с динамической типизацией вообще не представляется возможным.

    Недостаток второго метода в том, что теперь возвращаемое значение предыдущей функции не совпадает с принимаемым значением (или self в OO языках) последующей и их нельзя просто так взять и связать точкой. Но эта проблема решена с помощью композиции в некой категории Клейсли, при чем, она предлагает более общее решение, которое помогает не только при вероятном отсутствии значения, но и в других ситуациях. Например, неопределенности, которая часто встречается при parsing'е того же программного кода. Интересная концепция, кстати, рекомендую почитать на досуге.
  • Вместе с Visual Studio 2015 состоялся релиз TypeScript 1.5
    0
    Хм, возможно это у меня IntellijIDEA раньше не понимала такой синтаксис. Если да, прошу прощения, за то, что ввел в заблуждение.
  • Вместе с Visual Studio 2015 состоялся релиз TypeScript 1.5
    0
    Еще, если аргумент один, но у него указан тип, то таки, к сожалению, надо брать его в скобки.
  • Вместе с Visual Studio 2015 состоялся релиз TypeScript 1.5
    +1
    Мне кажется, это не стоит упоминания. Они стремятся быть суперсетом ES6, а это часть стандарта. Кстати, подробнее список изменений 1.5 можно посмотреть в roadmap, а все, что уже поддерживается в Kangax ES6.
  • Вместе с Visual Studio 2015 состоялся релиз TypeScript 1.5
    0
    Еще появилась поддержка arrow functions без скобок, если тело функции содержит только одно выражение.
    То, что раньше нужно было писать так:

    (singleParam) => { return expression; }
    


    теперь можно так:

    singleParam => expression
    
  • Сравниваем Nim и Rust
    0
    Вы правы, почему-то считал, что это язык для CLR.
  • Сравниваем Nim и Rust
    –8
    Но ведь это язык из другой весовой группы. Он выполняется в виртуальной машине.
  • Как я нашел лучший в мире язык программирования. Часть 2
    +11
  • Как я нашел лучший в мире язык программирования. Часть 2
    +4
    Нет, я так не считаю. Есть разные классы ошибок. Переполнение stack'a — отдельный класс, который, есть и в динамических языках. Он вообще никак не связан с типизацией. Так же, как не связаны с типизацией утечки памяти. Я считаю, что статическая типизация позволяет отсеять все ошибки типизации, особенно если в вашем языке нет ошибки на миллиард долларов.

    Проблема с тестами в том, что невозможно проверить все возможные варианты входных данных.
  • Как я нашел лучший в мире язык программирования. Часть 2
    +8
    Хорошо, давайте разберем.
    1. Устранить ошибку на ранних этапах разработки дешевле, согласны? Чтобы починить в production'e нужно исправить, пройти code review, тесты, и задеплоить (возможно у вас есть еще этапы). А чтобы исправить падающую программу нужен только первый этап.
    2. Ошибка исправленная на раннем этапе не вредит пользователям.
    3. Все люди ошибаются. Компиляторы внимательны. Статическая типизация позволяет избежать этого класса ошибок раз и насовсем. Я согласен, что это проблема людей, но, мне кажется, лучше использовать компилятор, чем вживлять себе ген слона, чтобы все помнить.

    Я думаю, автор имел ввиду, что у него не получается держать в памяти (которая в голове) всю необходимую информацию, чтобы хорошо писать на динамически типизированных языках.
  • Как я нашел лучший в мире язык программирования. Часть 2
    +2
    Undefined method method_name on class_name, очевидно. Чаще всего это NilClass.
  • Как я нашел лучший в мире язык программирования. Часть 2
    +2
    Научите? Правда, очень хочется. Я на работе пишу на Ruby, и сильно страдаю от динамической типизации. Немного помогают аннотации, хорошо помогают тесты, но все равно случаются ошибки в production'е. Автор, кстати, тоже не умеет.

    … динамическая типизация мне не интересна. Это все для людей с большим модулем памяти в башке.

  • Как я нашел лучший в мире язык программирования. Часть 2
    +2
    В Haskell нет, но работа ведется.

    Fork: github.com/goldfirere/ghc/tree/nokinds
    Wiki: ghc.haskell.org/trac/ghc/wiki/DependentHaskell
  • Как я нашел лучший в мире язык программирования. Часть 2
    +15
    Еще вы никогда не получите такого количества ошибок типизации. Проекты среднего и больше размера лучше писать на статически типизированных языках, иначе рефакторинг превращается в ад и Израиль.
  • Common Lisp IDE
    –1
    Могу ли я сделать вывод из вашего сообщение, что несмотря на опыт, запись справа налево остается неудобной, особенно если параметров несколько?
  • Common Lisp IDE
    –1
    Я не говорю, что проблема с скобках. Я сам согласился, что к C такой же вопрос.

    Конечно, можно написать макрос. Но как говорят, «in Rome, do as Romans do», «со своим уставом в чужой монастырь не ходят». Это как в каком-то Ruby возвращать два значения, где второе — ошибка, как принято в Go.

    Все пишут справа налево, так здесь принято. Но удобно ли читать такой код?
  • Common Lisp IDE
    –1
    Но ведь теоретически можно сделать, чтобы функция была и самодостаточна и читалась слева направо.

    (((Common-Lisp-IDE) to-install) to-customize)
    


    Здесь точно так же как в LISP'e, только последний аргумент, а не первый, считается функцией.

    В Scala очень даже используют функции без точек

    names ++ otherNames
    


    Anyways, вопрос в том, удобно ли читать справа налево.
  • Common Lisp IDE
    –1
    У меня есть вопрос о синтаксисе, и при этом не о скобках.
    Что вы думаете об удобочитаемости записей, которые нужно смотреть справа налево? Например,

    (to-customize (to-install Common-Lisp-IDE))
    


    В объектно-ориентированных языках это можно было бы записать как

    Common-Lisp-IDE.to-install.to-customize
    


    Это не относится непосредственно к LISP, в том же Haskell или C запись тоже «перевернутая». Привыкаете ли вы или со временем это продолжает вызывать дискомфорт, так как традиционно письменность в другую сторону.

    .LISP'e на писать легко арабам Наверное
  • Настоящие ассоциативные массивы в JavaScript
    –5
    Use polyfill, Luke.
  • Android M и инструменты для разработчиков
    –2
    «One more thing»? «Блог компании Google»? Really?
  • Fedora 22 — все тренды в одной сборке
    0
    Спасибо за ответ. У меня нет linux'а чтобы проверить, но, похоже, SSH — единственная причина реализовать это как escape sequence, поэтому я убежден, что работает. Ведь можно было просто выполнять notify-send по PROMPT_COMMAND, но тогда бы команда выполнялась на компьютере, где запущен shell, а не terminal emulator. Конечно же, для этого надо на удаленном сервере настроить PROMPT_COMMAND. Так сказать, только по обоюдному согласию.
  • Fedora 22 — все тренды в одной сборке
    0
    Я не уверен как таким образом можно определить завершение. Нужно ведь наоборот: если вывод прекращается. Только прекращение вывода не гарантирует, что команда завершилась.
  • Fedora 22 — все тренды в одной сборке
    0
    О самом главном нововведении: выводе уведомления по завершению длительных команд. А как GNOME Terminal различает shell комманды и в частности момент завершения? Ведь эмулятор терминала ничего не должен знать об оболочке; он должен только выводить изображение интерпретируя при этом последовательности ANSI. Именно оболочка, BASH, например, знает когда закончилось выполнение. Он парсит PS1 или что?
  • Новые экспериментальные операторы Си++
    +38
    Хорошо, не будем. А C++ можно?
  • Новые экспериментальные операторы Си++
    +1
    Теперь заживем.
  • Microsoft анонсировала кроссплатформенный редактор для Windows, OS X и Linux
    +1
    Хм, Dropbox не хочет раздавать картинки.

    image

    image

    image
  • Microsoft анонсировала кроссплатформенный редактор для Windows, OS X и Linux
    +29
    Программирование текстового редактора на стэке веб техноголий — костыль на костыле и костылем поганяет. Нет, снаружи все получается очень красивенько, ведь HTML и CSS намного гибче, чем всякие Cocoa, GTK и QT. И умеет их использовать больше людей.

    Но, например, textarea не подойдет в качестве поля ввода, потому, что у нее недостаточно функционала. Нам ведь нужно и синтаксис подсветить, и autocomplete box в нужном месте показать. А это значит, что мы зафигачим div'ов, костылями сделаем его focusable, навешаем своих событий — нужно ведь реагировать на нажатие кнопок, уметь стирать по backspace, перемещаться влево на слово по alt-left, выделять по double click и еще много всего. Хорошо хоть надо поддерживать только один браузер.

    Или еще, позиционирование строк. Вы думали создадите обертку .editor со множеством вложенных div'ом и все будет показываться в правильных местах. Сейчас. Будь добр, рассчитай динамически координаты каждой строки и сделай абсолютное позиционирование. А еще при scroll'е давайте удалять невидимые строки, браузер, как и Москва, не резиновый.

    Чем-то мне это напоминает дарвиновкую эволюцию — придумали язык разметки для простых страниц, а теперь извращаемся, чтобы написать на этом космический корабль. Получается так себе. Прямо как история с возвратным гортанным нервом.

    Наверное, это утрясется и появятся хорошие framework'и для разработки интерфейсов, но прямо сейчас это Ад и Израиль. Очень гибкий Ад и Израиль, справедливости ради; никогда плагины к той же IntelliJ IDEA не смогут быть настолько же свободными. Хочешь — добавляй индикатор изменившихся линий к строкам (я знаю, что это можно, но ведь JetBrains должны были сначала поддержать)
    image
    хочешь, custom'ную панель снизу
    image
    хочешь, кнопочки с красивой анимацией
    image

    Полная свобода, никаких тебе интерфейсов, которые нужно имплементировать. А еще можно потом сделать как веб-сервис. Заходишь такой на github.com, кликаешь на файл, а он открывается в навороченном редакторе, почти как IDE.

    В общем, я верю, что за этим будущее, но, к сожалению, не настоящее.
  • RubyMine 7.1: улучшенная работа с Puppet, JavaScript, CoffeeScript и не только
    0
    Установил — включает дискретную видеокарту при запуске на MBP. Удалил.
  • RubyMine 7.1: улучшенная работа с Puppet, JavaScript, CoffeeScript и не только
    0
    Судя по скриншотам, у вас RubyMine на Java 1.8. Есть ли преимущества от использования IDE с новой версией?
  • Релиз elementary OS «Freya»
    0
    Да.
  • Французский телеканал был взломан после интервью сотрудника на фоне стикеров с паролями
    +9
    — У нас дыра в безопасности.
    — Ну хоть что-то у нас в безопасности.
  • Релиз elementary OS «Freya»
    +3
    Лучшая часть Elementary OS для меня — это видео плеер Audience. Его killer feature — превью при наведении на полосу времени, как на YouTube, но намного быстрее, и это видео, а не статическая картинка.

    image
    На скриншоте старая версия плеера, новее не нашел.
  • Делаем скриншоты правильно: практические советы
    0
    Есть версия только для Windows.
  • Библиотека эмуляции терминала ROTE и Lua привязки
    0
    Несмотря на то, что я сумбурно изъясняюсь, я таки понимаю, что иметь устройства ввода-вывода еще недостаточно, чтобы быть эмулятором терминала. Но они — публичный интерфейс эмулятора, если проводить параллели с OOP. Все, что внутри — неважно для внешнего наблюдателя. Ну да, умеет он как-то преобразовывать ANSI и показывать его.

    С ls та же самая история. Обрезает ли он ANSI, или не добавляет его с самого начала, результат один: если output не pty, вывод отличается.

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

    То же и с последовательностями управления. Хотелось бы иметь возможность написать свой terminfo, и забыть о совместимости с ANSI, но программисты идут самым простым путем, и существует вагон и маленькая тележка утилит, у которых захардкоджены эти последовательности.

    Если позволите, я хотел бы попросить совет. В современно мире, не имея наследия visual terminals и таких ограничений ресурсов, нужно ли передавать управляющие последовательности in-bound, или стоит их вынести в отдельный поток? Извините за off-topic.
  • Библиотека эмуляции терминала ROTE и Lua привязки
    0
    Спасибо за ответ. Что такое <A-FN$>?

    Возможно, я неправильно понял man, но мое представление об эмуляторах терминала отсюда: linux.die.net/man/4/ptmx
    Согласно описанию, нужно открыть /dev/ptmx, получить a file descriptor (первое устройство, в которое писать), потом сделать некие телодвижения и получить второе устройство, /dev/pts* — из которого читать.

    Вы правы, теоретически можно обойтись без устройств. Но практически так никто делать не станет. Не говоря уже о ls, который обрезает control sequences, su и passwd не читают из pip'ов.
  • Библиотека эмуляции терминала ROTE и Lua привязки
    0
    Мне кажется, у вас переплетаются функции эмулятора терминала и оболочки (shell). Терминал должен отвечать только за отображение информации: это односторонний канал коммуникации который получает поток символов и, иногда, последовательности управления. Переместить курсор, там, или подсветить красненьким. Важно, что состояние курсора хранится в оболочке, а эмулятору терминала оно нужно для того, чтобы знать с какого места продолжать выводить данные. Большинство PTY используют ANSI для control sequences, но я бы все же не полагался на это, и доверял terminfo. Ncurses, например, использует terminfo.

    По сути, эмулятор терминала — это пара устройств, с которыми можно обращаться как с файлами. Вот, например, как писать в терминал без всяких библиотек, just for fun.:

    $ tty # In one session: find out this terminal's output device.
    $ printf "$(tput setaf 1)Follow the $(tput setaf 7)white$(tput setaf 1) rabbit." > ttys006 # In another session: write to the first one.
    


    Кстати, tput выводит правильную для вашего терминала последовательность, а не hard-coded ANSI.
  • Ruby Together – фонд развития языка Ruby
    0
    А «получаете доступ к проектам» — это доступ на чтение, или можно commit'ить?