Pull to refresh
14
0

Инженер-программист

Send message

Какие языки программирования и почему используются в сфере финансов

Reading time5 min
Views47K


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

В нашем сегодняшнем материале мы поговорим как раз о том, как понять, какую из существующих технологий следует использовать в конкретной ситуации на фондовом рынке.
Читать дальше →

Как я нашел лучший в мире язык программирования. Часть 2

Reading time6 min
Views103K
Первая часть здесь. Продолжение:

Семь долбаных лет я ждал язык, который хоть как то ответит части моих желаний. За это время, и в фоновом режиме я препробывал всё. Всё — означает, всю херню общего назначения, и всю херню не совсем общего назначения. Нельзя прочувствовать язык только что-то прочитав про него и написав Hello World. Чтобы понять — надо хоть немного попрограммировать — написать какую нить вещь. И вот все это время, я в минуты отчаянья качал какой-нить “замечательный язык”, и пытался что-то написать. Какие-то вещи даже до сих пор крутятся в конторе (или крутились).
Читать дальше →

Как я нашел лучший в мире язык программирования. Часть 1

Reading time6 min
Views104K
Поскольку дальше я буду жестко провоцировать троллей на тему языков программирования, и тем более назову лучший в мире (на данный момент) язык программирования (абсолютно лучший, то есть без всяких оговорок), от чего, обычно, у троллей срывает башню, рекомендую им и всем остальным ознакомиться с моим постом почти трех летней давности «О выборе языка программирования», все написаное там актуально и повторяться я не хочу.

Прочитали? Дальше будет про лучший в мире язык программирования, который я назову ближе к концу. Да, да, еще три дня назад я и не думал что единороги существуют — ведь каждый язык так или иначе сосет, и каждый сосет по-своему (хотя нет, есть и такие которые сосут всегда и везде, но о них не будем). Как инженер, я прекрасно понимал что в вопросе языка не возможно без разнообразных trade offs, начиная с garbage collected vs manual memory management, хотя Rust пытается съесть рыбку не присев на палку в этом вопросе, и так далее. Хоть мы и говорим о языках общего назначения, все они так или иначе позиционируют себя, фокусируясь на каких-то идеях, принципах, и целях, в которых они хороши, оставляя все не согласованное с такими принципами в лучшем случае возможными, но не эффективными и/или не удобными. Одним словом нецелесообразными. Однако язык, сочетающий в себе несочетаемое, есть.

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

Common Lisp IDE

Reading time5 min
Views70K

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

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

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

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

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

Vim по полной: Введение

Reading time5 min
Views70K
Привет, хабраюзер!

Вот уже второй год я активный пользователь и поклонник редактора Vim. За это время я прошел путь от двух команд в .vimrc, до файла в несколько килобайт и обратно. Я испробовал очень много плагинов, а так же активно писал собственные, и теперь это мой основной текстовый редактор для работы и отдыха.

В этой серии статей я решил поделиться собственными наработками и, возможно, показать, на что может быть способен этот редактор в руках программиста. Серия будет состоять из следующих частей:
  1. Введение (vim_lib)
  2. Менеджер плагинов без фатальных недостатков (vim_lib, vim_plugmanager)
  3. Уровень проекта и файловая система (vim_prj, nerdtree)
  4. Snippets и шаблоны файлов (UltiSnips, vim_template)
  5. Компиляция и выполнение чего угодно (vim-quickrun)
  6. Работа с Git (vim_git)
  7. Деплой (vim_deploy)
  8. Тестирование с помощью xUnit (vim_unittest)
  9. Библиотека, на которой все держится (vim_lib)
  10. Другие полезные плагины

Хочется сразу заметить, что я не преследую цель «посадить как можно больше людей на иглу Vim», так как статья больше расчитана на опытных пользователей, нежели на новичков.

Готов? Вперед под кат!

Бесплатный учебник электроники, архитектуры компьютера и низкоуровневого программирования на русском языке

Reading time2 min
Views251K

Господа! Я рад сообщить, что наконец-то все желающие могут загрузить бесплатный учебник на более чем 1600 страниц, над переводом которого работало более полусотни человек из ведущих университетов, институтов и компаний России, Украины, США и Великобритании. Это был реально народный проект и пример международной кооперации.

Учебник Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера», второе издание, 2012, сводит вместе миры программного обеспечения и аппаратуры, являясь одновременно введением и в разработку микросхем, и в низкоуровневое программирование для студентов младших курсов. Этот учебник превосходит более ранний вводный учебник «Архитектура компьютера и проектирование компьютерных систем» от Дэвида Паттерсона и Джона Хеннесси, причем соавтор предыдущего учебника Дэвид Паттерсон сам рекомендовал учебник от Харрисов как более продвинутый. Следуя новому учебнику, студенты строят реализацию подмножества архитектуры MIPS, используя платы с ПЛИС / FPGA, после чего сравнивают эту реализацию с индустриальными микроконтроллерами Microchip PIC32. Таким образом вводится вместе схемотехника, языки описания аппаратуры Verilog и VHDL, архитектура компьютера, микроархитектура (организация процессорного конвейера) и программирование на ассемблере — в общем все, что находится между физикой и высокоуровневым программированием.

Как загрузить? К сожалению, не одним кликом. Сначало надо зарегистрироваться в пользовательском коммьюнити Imagination Technologies, потом зарегистрироваться в образовательных программах на том же сайте, после чего наконец скачать:
Читать дальше →

Мой топ-100 книг по Программированию, Компьютерам и Науке: часть 1

Reading time3 min
Views133K
Недавно сайт Fog Creek взял у меня интервью, и один из вопросов был связан с моими любимыми книгами по программированию, кодированию и разработке программ. Мне этот вопрос запомнился потому, что я давно себя считаю заядлым книжным ботаником. Книжный ботаник я потому, что безумно люблю книги о науке, компьютерах и программировании. Каждые несколько месяцев я уделяю день или два исследованию недавно изданной литературы и покупке наиболее понравившихся экземпляров. Я мог бы вечно разговаривать о своих любимых книгах. Ведь у меня их так много.

Меня настолько заинтересовал вопрос о книгах, что я решил начать новую серию статей на своём сайте catonmat о моих топ-100 книгах о программировании, программном обеспечении, науке, физике, математике и компьютерах. В каждой статье я буду размещать по пять книг, ведь разбивать огромное задачи на маленькие подзадачи — это самый простой способ их решать (GTD — get things done).

Взгляните на мою книжную полку, чтобы убедиться, что я настоящий ботаник:

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

λ-исчисление и LISP

Reading time12 min
Views24K

Типичный любитель λ-исчисления.

Однажды, бороздя просторы интернета, я наткнулся на новость о лиспоподобном, встраиваемом языке программирования Shen. Раньше у них на главной странице висел пример кода на Лиспе. В примере авторы описывают абстрактную коллекцию и функции работы с ними.

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

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

Если вас не пугает Lisp, много лямбд и y-combinator (не тот, который с новостями),
Добро пожаловать под кат

Пример векторной реализации нейронной сети с помощью Python

Reading time14 min
Views50K
В статье речь пойдет о построение нейронных сетей (с регуляризацией) с вычислениями преимущественно векторным способом на Python. Статья приближена к материалам курса Machine learning by Andrew Ng для более быстрого восприятия, но если вы курс не проходили ничего страшного, ничего специфичного не предвидится. Если вы всегда хотели построить свою нейронную сеть с преферансом и барышням векторами и регуляризацией, но что то вас удерживало, то сейчас самое время.

Данная статья нацелена на практическую реализацию нейронных сетей, и предполагается что читатель знаком с теорией (поэтому она будет опущена).
Читать дальше →

О бытовом заблуждении

Reading time4 min
Views37K
Каждому иногда приходится размышлять над тем, что же происходит в ИТ, как оно будет дальше развиваться, и как потом с этим жить. Хотелось бы этим постом ответить на статью «Мысли об идеальном языке программирования».

Что мы видим в оригинальной статье? Осведомленный о современных тенденциях языкостроения автор оценивает один из флагманских языков системного программирования, рассуждая, каких еще положительных концепций и архитектурных решений можно воткнуть в современный язык методом наращивания фич силами огромного общемирового сообщества.
А на самом деле...

Особенности концептуального моделирования предметной области

Reading time3 min
Views22K
Я продолжаю серию статей, посвященных особенностям концептуального моделирования предметных областей. В прошлой статье я показал. как возможно связать объект с классом объектов семантической связью. В статье я рассказал о том, что понимается под термином класс в ООП. Сегодня я расскажу, почему я предпочитаю строить концептуальные модели в виде ER диаграмм.

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

В терминах ER модели принято говорить, что есть автомобиль, есть колесо и есть связь между автомобилем и колесом. Связь эта называется «колесо-автомобиль» и имеет отношение один ко четырем. Связь, читаемая от колес, называется: «стоит на», связь, читаемая от автомобиля, называется: «имеет».



В терминах ООП говорят так: есть класс ООП автомобилей и есть класс ООП колес. Между этими классами ООП есть связь один к четырем. Связь называется: «автомобиль-колесо». Связь, читаемая от колес, называется: «стоит на», связь, читаемая от автомобиля, называется: «имеет».



Посмотрим внимательно на предметную область и напишем, как будет выглядеть представление модели предметной области в терминах логической парадигмы.
Читать дальше →

Твой код никого не интересует

Reading time4 min
Views81K
Мой код никого не интересует. Я был повержен в шок, когда осознал это в процессе работы программистом. Я тратил много времени на оттачивание своего кода, пока не понял, что он никого не интересует, ведь в зачет идет не сам код, а продукт. Принятие программистом этого факта приведет к повышению продуктивности и ценности его работы.
Читать дальше →

Легенда об искушении: как использовать Python для автоматизации iOS

Reading time10 min
Views31K


Часто нам приходится совершать со своим iPhone монотонные и довольно скучные манипуляции, которые заставляют нас с завистью смотреть на десктопы с их безграничными возможностями настройки, скриптинга и автоматизации действий. Да что там десктопы — даже на пользователей Android с их вездесущим Tasker’ом, с помощью которого можно запрограммировать смартфон на что угодно. В iOS существование подобных приложений невозможно, но у нас есть небольшая лазейка.

В этой статье я хочу рассказать о Pythonista — среде разработки на языке Python (версии 2.7.5) для iOS, которая позволяет в том числе писать полноценные приложения с графическим интерфейсом. Однако мы будем использовать ее для несколько иных целей — для создания простых подсобных скриптов, которые будут автоматизировать рутинные операции.
Читать дальше →

Статический анализ кода

Reading time11 min
Views45K
John CarmackПримечание от переводчика. Изначально эта статья была опубликована на сайте AltDevBlogADay. Но сайт, к сожалению, прекратил своё существование. Более года эта статья оставалась недоступна читателям. Мы обратились к Джону Кармаку, и он сказал, что не против, чтобы мы разместили эту статью на нашем сайте. Что мы с удовольствием и сделали. С оригиналом статьи можно познакомится, воспользовавшись Wayback Machine — Internet Archive: Static Code Analysis.

Поскольку все статьи на нашем сайте представлены на русском и английском языке, то мы выполнили перевод статьи Static Code Analysis на русский язык. А заодно решили опубликовать её на Хабре. Здесь уже публиковался пересказ этой статьи. Но уверен, многим будет интересно прочитать именно перевод.


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

Python Meetup 27.02.15: Hy и Toga

Reading time2 min
Views7.4K
27 февраля состоялся очередной Python Meetup. В этот раз мы обсуждали:

  • Hy — диалект, который позволяет Lisp-разработчикам использовать библиотеки Python, а Python’истам найти решение для некоторых проблем языка, например, отсутствия скобочек.
  • Toga — библиотека построения интерфейсов на Python, которая с первого взгляда выглядит как простой и универсальный инструмент, но на деле имеет ряд недоработок.

Во время Lightning Talk участники делились опытом экспорта .doc-файлов и идеями использования AST для трансляции Python в Ruby, JavaScript, C++ и др.

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

[Видео] Путешествие от Солнца до Юпитера со скоростью света

Reading time1 min
Views28K
В нашем привычном понимании свет движется очень быстро. Однако в сравнении с огромными расстояниями во вселенной он очень медленный. Это видео демонстрирует путешествие фотона, излучённого солнцем, через часть солнечной системы.

Автор позволил себе некоторую свободу в выравнивании планет и астероидов, но в целом он постарался отобразить всё как можно более точно. Также он решил закончить видео сразу после Юпитера, чтобы длительность видео была меньше часа.

Революция в области искусственного разума. Часть вторая: Бессмертие или уничтожение жизни на земле

Reading time25 min
Views34K
Примечание переводчика: Данная статья является переводом (оригинальная статья ). Это перевод первой части второй статьи перевод первой части. Вторая часть оказалась слишком большой 15к слов, по этому её пришлось разделить на две части примерно по 8к (оригинального текста) слов каждая, перед вами первая часть перевода второй части статьи, вторую часть опубликую сразу как переведу. Оригинальная статья была написана для широкой аудитории, поэтому многие термины использованные в ней могут быть не точными или вообще не научными. При переводе я старался сохранить непринуждённый дух статьи и юмор, с которым был написан оригинал. К сожалению, это не всегда получалось. Переводчик согласен не со всем, что написано в данной статье, но правки к фактам и своё мнение не были добавлены даже в виде примечаний или комментариев. В тексте могут быть ошибки и опечатки, сообщайте о них, пожалуйста, в личные сообщения, буду стараться исправлять всё максимально быстро. Все ссылки в тексте скопированы из оригинальной статьи и ведут на англоязычные ресурсы.



We have what may be an extremely difficult problem with an unknown time to solve it, on
which quite possibly the entire future of humanity depends. — Nick Bostrom

Перед нами, вероятно, одна из сложнейших задач, с которой когда-либо сталкивалось человечество, и мы даже не знаем сколько времени у нас есть на её решение, но от него зависит будущее нашего биологического вида — Ник Бостром
Читать дальше →

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

Reading time8 min
Views9K
Этим постом я начну небольшой цикл статей, посвящённых различных аспектам разработки приложений в системе электронного документооборота. Сегодня все более или менее мощные и современные СЭД/ECM-платформы содержат набор компонентов и инструментов для их реализации, и именно приложения, создаваемые на базе платформы, позволяют автоматизировать все разнообразие рабочих процессов клиента. Я расскажу о модели приложения платформы Docsvision, о компонентах и средствах разработки (настройки) этих приложений, о том, какие проблемы возникали у нас при реализации инструментария для их разработки, и о том, чего ждём в дальнейшем. Это будет интересно не только тем, кто плотно работает с Docsvision, но и позволит почерпнуть опыт тем, кому предстоит внедрять или развивать свою корпоративную СЭД.
Читать дальше →

9 фактов, которые знают программисты, и не знают все остальные

Reading time3 min
Views191K
image

Факт 1


Под капотом самых критичных программ, которые вы используете на ежедневной основе (Mac OS X или Facebook) содержится ужасное количество хаков и костылей, которые с трудом уживаются друг с другом. Это как если бы вы разобрали боинг 747 и увидели, что топливопровод держится вешалкой для одежды, а шасси смотаны изолентой.

Бен Черри
Читать дальше →

Доказательство некорректности алгоритма сортировки Android, Java и Python

Reading time13 min
Views76K
Тим Петерс разработал гибридный алгоритм сортировки Timsort в 2002 году. Алгоритм представляет собой искусную комбинацию идей сортировки слиянием и сортировки вставками и заточен на эффективную работу с реальными данными. Впервые Timsort был разработан для Python, но затем Джошуа Блох (создатель коллекций Java, именно он, кстати, отметил, что большинство алгоритмов двоичного поиска содержит ошибку) портировал его на Java (методы java.util.Collections.sort и java.util.Arrays.sort). Сегодня Timsort является стандартным алгоритмом сортировки в Android SDK, Oracle JDK и OpenJDK. Учитывая популярность этих платформ, можно сделать вывод, что счёт компьютеров, облачных сервисов и мобильных устройств, использующих Timsort для сортировки, идёт на миллиарды.

Но вернёмся в 2015-й год. После того как мы успешно верифицировали Java-реализации сортировки подсчётом и поразрядной сортировки (J. Autom. Reasoning 53(2), 129-139) нашим инструментом формальной верификации под названием KeY, мы искали новый объект для изучения. Timsort казался подходящей кандидатурой, потому что он довольно сложный и широко используется. К сожалению, мы не смогли доказать его корректность. Причина этого при детальном рассмотрении оказалась проста: в реализации Timsort есть баг. Наши теоретические исследования указали нам, где искать ошибку (любопытно, что ошибка была уже в питоновской реализации). В данной статье рассказывается, как мы этого добились.

Статья с более полным анализом, а также несколько тестовых программ доступны на нашем сайте.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity