Рубрика «Программирование» - 730

Модули расширения Python на Rust - 1

“Absolute statements are the root of all evil.
The key is balance. There are no answers, only questions.”
????

Автор статьи: zolkko.

Оптимизации

Когда говорят про оптимизацию в контексте ПО, часто подразумевают оптимизацию производительности программиста и/или оптимизацию самого ПО.

Исходя из YAGNI-принципа, Python позволяет программисту сосредоточиться на реализации ПО, избавив его от необходимости заботиться о низкоуровневых вещах: регионах памяти, в которых выделяются объекты, освобождении памяти, соглашениях о вызовах.

На обратную проблему в одной из его лекций о Haskell указал Саймон Джонс. У него был слайд со стрелкой, закрашенной градиентом. В начале было написано “no types”, посередине — “Haskell”, в конце — “Coq”. Указав на Coq, он сказал: “This stresses power over usability. Right?! You need a PhD here!”[1]. Несмотря на то, что это была шутка, мантра Python — одна из любимых программистами особенностей этого языка. По моему опыту, это то, что позволяет выпускать готовый продукт несколько быстрее.
Читать полностью »

В этой статье речь пойдет о Николаусе Вирте, его проекте Lilith и язык Modula-2. За этот проект Вирт был удостоен премии Алана Тьюринга в 1984 году. Премия Алана Тьюринга — это аналог Нобелевской премии в области информатики, она была учреждена еще в 1966 году и ежегодно вручается Ассоциацией вычислительной техники за выдающиеся достижения в области вычислительных наук. С 2007 года премия Тьюринга спонсировалась Google совместно с Intel, cумма премии составляла 250 тысяч долларов. После того как Intel вышла из числа спонсоров, гигант Google повысил сумму выплаты в четыре раза до 1 млн долларов.

Органичное взаимодействие программы и оборудования: проект Lilith и язык программирования Modula-2 - 1

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

Николаус Вирт — всемирно известный ученый, инженер, исследователь, доктор наук в области электротехники и компьютерных наук, профессор федерального технологического института ETH в Цюрихе, его мы знаем как создателя языков программирования Паскаль, Оберон. В 1934 году 15 февраля он родился в городке Винтертур (Швейцария) в семье учителя. В родительском доме была большая библиотека и маленький Вирт уже с детства интересовался книгами о железной дороге, турбинах и телеграфе. Его увлекала техника, он занимался авиамоделированием и не просто мечтал о полетах, а жил этой мечтой, мечтой покорить воздушное пространство. Еще, будучи в школе, Вирт «оборудовал» в школьном подвале секретную лабораторию, где занимался моделированием.
Читать полностью »

Немного размышлений и советов по оптимизации кода на С++ - 1

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

Как правило, язык C++ используют там, где требуется высокая скорость работы. Но на C++ без особых усилий можно получить код, работающий медленнее какого-нибудь Python/Ruby. Именно подобным кодом оперируют многочисленные сравнения Any-Lang vs C++.

Вообще, оптимизация бывает трех типов:

  1. Оптимизация уже готового, проверенного и работающего кода.
  2. Изначально написание оптимального кода.
  3. Просто использование оптимальных конструкций.

Специально заниматься оптимизацией готового кода следует только после того, как проект закончен и используется. Как правило, оптимизация потребуется только в небольшой части проекта. Поэтому сначала нужно найти места в коде, которые съедают большую часть процессорного времени. Ведь какой смысл ускорять код, пусть даже на 500%, если он отнимает только 1% машинного времени? И следует помнить, что, как правило, гораздо больший выигрыш в скорости дает оптимизация самих алгоритмов, а не кода. Именно про данный ее вид говорят: «преждевременная оптимизация — зло» (с).

Второй тип оптимизации — это изначальное проектирование кода с учетом требований к производительности. Такое проектирование не является ранней оптимизацией.

Третий тип даже не совсем оптимизация. Скорее это избегание неоптимальных языковых конструкций. Язык C++ довольно сложный, при его использовании частенько нужно знать, как реализован используемый код. Он достаточно низкоуровневый, чтобы программисту пришлось учитывать особенности работы процессоров и операционных систем.
Читать полностью »

Данная статья призвана рассказать о возможности использования имеющейся на борту дисплея Flash памяти для нужд проекта.
Для кого это актуально или просто интересно — добро пожаловать под кат.Читать полностью »

image
КДПВ

Кто-то создает программное обеспечение с открытым исходным кодом, а я провожу много времени размышляя над тем, как сделать программное обеспечение лучше. Бесконечный поток просьб о помощи на форумах Stack Overflow, GitHub, Slack, в электронных письмах и личных сообщениях неизбежен. К счастью, в итоге вы знаете многих людей, которые добились определенного успеха и сделали фантастические вещи, и знание о том, что вы приняли в этом участие благодаря вам и вашей помощи, является хорошей мотивацией для новых достижений.

У вас возникает вопрос: какие качества программного обеспечения приводят разработчика к успеху или к неудаче? Как я могу улучшить свой софт и помочь бо́льшему количеству людей стать успешным? Я могу ясно сформулировать некоторые основные принципы или полагаюсь на интуицию в зависимости от конкретного случая? (Рождение и воплощение одной мысли это два совершенно разных действия).

Возможно это что-то вроде принципов Дитера Рамса, способствующих качественному дизайну программного обеспечения?

  • Хороший проект является инновационным.
  • Хороший проект делает продукт полезным.
  • Хороший проект эстетичен.
  • Хороший проект делает продукт понятным.
  • Хороший проект ненавязчив.
  • Хороший проект честен.
  • Хороший проект длителен.
  • Хороший проект продуман до мельчайших деталей.
  • Хороший проект безвреден для окружающей среды.
  • В хорошем проекте дизайна настолько мало, насколько это возможно.

Читать полностью »

Часто появляются статьи вида «нужны ли программисту алгоритмы», и все они имеют примерно одинаковый шаблон. Автор статьи как правило пишет: «Я N лет пишу сайты/скрипты в 1С, и никогда не пользовался алгоритмами или структурами данных. Тут же приводятся в пример красно-чёрные деревья или какие-нибудь другие экзотические структуры, которые в области, в которой работает автор не часто увидишь, если увидишь вообще. Такие статьи сводятся к тому, что в конкретной области программисты не используют сложные структуры данных и не решают NP задач.
Читать полностью »

«Бесспорно, величайшая фигура хакерской культуры»

Эрик Рэймонд о Ричарде Столлмане

image

  • Свобода запускать программу для любых целей (свобода 0)
  • Свобода изучать устройство программы и приспосабливать ее к своим потребностям (свобода 1). Это предполагает доступ к исходному коду программы.
  • Свобода распространять программу, имея возможность помочь другим (свобода 2).
  • Свобода улучшать программу и публиковать улучшения, в пользу всего сообщества (свобода 3). Это предполагает доступ к исходному коду программы.

Сегодня день рождения «последнего истинного хакера», Ричарда Столлмана, «вечного студента», освободителя ПО и идеолога свободного программного обеспечения (не путать с Открытое программное обеспечение), создателя GNU, автора концепции «copyleft».

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

Награды

  • 1986: Honorary lifetime membership of the Chalmers University of Technology Computer Society
  • 1990: Exceptional merit award MacArthur Fellowship («genius grant»)
  • 1990: The Association for Computing Machinery's Grace Murray Hopper Award «For pioneering work in the development of the extensible editor EMACS (Editing Macros)»
  • 1996: Honorary doctorate from Sweden's Royal Institute of Technology
  • 1998: Electronic Frontier Foundation's Pioneer award
  • 1999: Yuri Rubinsky Memorial Award
  • 2001: The Takeda Techno-Entrepreneurship Award for Social/Economic Well-Being (武田研究奨励賞)
  • 2001: Honorary doctorate, from the University of Glasgow
  • 2002: United States National Academy of Engineering membership
  • 2003: Honorary doctorate, from the Vrije Universiteit Brussel
  • 2004: Honorary doctorate, from the Universidad Nacional de Salta
  • 2004: Honorary professorship, from the Universidad Nacional de Ingeniería del Perú
  • 2007: Honorary professorship, from the Universidad Inca Garcilaso de la Vega
  • 2007: First Premio Internacional Extremadura al Conocimiento Libre
  • 2007: Honorary doctorate, from the Universidad de Los Angeles de Chimbote
  • 2007: Honorary doctorate, from the University of Pavia
  • 2008: Honorary doctorate from the Universidad Nacional de Trujillo, in Peru
  • 2009: Honorary doctorate, from Lakehead University
  • 2011: Honorary doctorate, from National University of Córdoba
  • 2012: Honorary professorship, from the Universidad César Vallejo de Trujillo, in Peru
  • 2012: Honorary doctorate, from the Universidad Latinoamericana Cima de Tacna, in Peru
  • 2012: Honorary doctorate, from the Universidad José Faustino Sanchez Carrió, in Peru
  • 2014: Honorary doctorate, from Concordia University, in Montréal

Предлагаю воспользуемся правом читать, пока оно есть.
(под катом — подборка статей на русском, один забавный факт со взломами паролей и картинка первого компьютера Столлмана)
Читать полностью »

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

Задача оффлайновой фильтрации сигналов в случае, когда ожидаемая форма сигнала известна с точностью до нескольких неизвестных параметров, сводится к задаче аппроксимации. Например, если известно, что сигнал линейно растет на рассматриваемом промежутке, задача сведётся к линейной регрессии, а если можно предположить, что шум — нормален, то правильным методом будет МНК. Но однажды мы столкнулись с задачей оценки формы профиля рентгеновского микрозонда (пучка), про которую априори было достоверно известно только одно: профиль унимодален, а именно имеет ровно один максимум. Оказывается, и в этом случае можно наилучшим (в смысле, например, L2 метрики) образом приблизить экспериментальный сигнал функцией, принадлежащей известному множеству (множеству унимодальных функций). Причём — с приемлемой ассимптотикой вычислительной сложности.

Об одном забавном подходе к фильтрации унимодальных сигналов - 1 ===> Об одном забавном подходе к фильтрации унимодальных сигналов - 2 ===> Об одном забавном подходе к фильтрации унимодальных сигналов - 3
Читать полностью »

Это ответ на пост "А нужно ли знать программисту алгоритмы?"

Так почему я пишу свои алгоритмы в 95% случаев и буду их и дальше писать?

Дабы быть кратким, сразу приведу конкретику в моем случае (весьма экзотическом), но отмечу что есть немало случаев-аналогов. Если в вашей практике нет случая-аналога — поздравляю, вам не нужно заморачиваться велосипедами. Возьмите с полки пирож... Возьмите готовый код, это реально отличный вариант для RAD, да и просто для потоковой разработки, где время — деньги, а специальные требования отсутствуют.

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

[PF] Печать PDF средствами .NET - 1

Под катом хочу рассказать про вывод на печать PDF фалов под .NET. С уклоном на печать из разных лотков принтера. Это бывает полезно, когда нужно распечатать документы, состоящие из разных типов бумаги разложенных по лоткам принтера.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js