программирование

Постов: 108 Рейтинг: 219731
551

Прогрессия кода

Развернуть
Прогрессия кода
4245

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

Развернуть
Программисты пропустили воду через песок и безумно рады GIF
Там есть чему радоваться. Во время этой симуляции одновременно производятся миллионы вычислительных операций, которые определяют положение каждой частицы в конкретных момент.

Это результат большого исследования программистов из DreamWorks Animation, Jixie Effects и профессоров университетов Калифорнии и Пенсильвании.

Источник
6712

Тяжелая работа программиста

Развернуть
Тяжелая работа программиста
Фред Брукс: То что один программист может сделать за месяц, два могут сделать за два.

БМ молчал.
5319

Гарвардский курс CS50 на русском. Все серии

Развернуть
Друзья, мы рады сообщить, что перевод всего гарвардского курса CS50 закончен. В курсе было 24 серии, но последние две были одной и той же лекцией - одна прочитана в Гарварде, а другая в Йеле.
Курс переведён и озвучен нашей студией по заказу JavaRush, и мы хотим сказать им огромное спасибо за поддержку!
Гарвардский курс CS50 на русском. Все серии
На кого рассчитан курс CS50?

Если вы — новичок, пройдите CS50. Если кто-то из ваших знакомых приглядывается к ИТ и программированию, советуйте CS50 не глядя. Я серьезно.
CS50 подойдет любому человеку, кто решил стать «айтишником». Пожалуй, его можно рекомендовать и способным 12-летним, и умудренным опытом «перебежчикам» из других профессий. Идеально — старшеклассникам и студентам.
Курс очень прогрессивный и обновляется из года в год. При этом в отличие от большинства подобных университетских обучающих программ (например, MIT 6.00X) от слушателя не требуются знания университетской математики, достаточно школьного уровня.

Что изучают на CS50?

— Основы компьютерных наук и программирования. Системы счисления, работа с командной строкой в Linux, циклы, условные переходы и прочие радости;
— Концепции алгоритмов и алгоритмичности мышления. Вы узнаете о том, какие задачи можно решать с помощью программирования и каким образом. О бинарном поиске, простом по сути, но очень эффективном и требующем тщательности в реализации, Дэвид Малан расскажет сходу, прямо на нулевой лекции. И попробуйте потом забыть сцену с разрывом телефонного справочника, а вместе с ней — и полученные знания! Вообще, курс охватывает все основные алгоритмы, которые нужно знать и понимать «айтишникам»;
— Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;
— Основы языка программирования C и визуального языка Scratch. Собственно, все основные примеры и задания студенты делают на языке C;
— Основы баз данных и SQL;
— Веб-разработка: основы CSS, HTML, JavaScript и PHP. Естественно, только самые азы;
— Основы подготовки презентации проектов по программированию.

Список переведённых лекций:

1-я лекция: вступительная, знакомит с общими понятиями языков программирования, а также с командой преподавателей и системой предстоящих занятий.
2-я лекция: также является вступительной и знакомит с общими понятиями языков программирования, продолжая тему первой лекции.
3-я лекция: знакомит с понятием и функциями компилирования и рассказывает, каким образом в программах появляются баги (начиная с самого первого «компьютерного жучка»), как их распознать и чем они могут быть вызваны.
4-я лекция: знакомит с типами данных и циклов, некоторыми базовыми функциями и основной схемой составления программы, а также демонстрирует ограниченность возможностей компьютеров и исторические примеры багов, не прошедших бесследно.
5-я лекция: продолжение о багах, плюс раскрывает понятие структуры программы, объясняет, зачем нужны функции внутри кода, в чём важность области действия значений, и вводит функцию strlen. Также из неё вы узнаете, как в CS50 борются с любителями списывать, и научитесь экономить оперативную память компьютера во избежание ошибки сегментации.
6-я лекция: об основах криптографии, массивах и аргументах командной строки.
7-я лекция: знакомит с основными методами сортировки данных. Дэвид Мэйлен рассказывает о пузырьковой сортировке, сортировках выбором, вставкой и слиянием, а зрители проверяют их на практике.
8-я лекция: про сортировку данных методом слияния, а также краткий экскурс в мир побитовых операций.
9-я лекция: продолжение знакомства с оператором условия — if, введение понятие рекурсии, а также обсуждение скандала концерна Volkswagen и проблемы компьютерной безопасности. Лектор детально рассматривает функцию перестановки - swap, демонстрирует приёмы работы с отладчиком программ и раскрывает структуру и механику оперативной памяти.
10-я лекция: о разных методах составления списков, сохранении информации о программе и использовании указателей и указуемых.
11-я лекция: изучение указателей, разбор структуры функций библиотеки CS50, знакомство с утечкой памяти, введение понятия linked list и других структур данных с детальной демонстрацией.
12-я лекция: про особенности стека, очереди и связного списка. Разбор возможных проблем, связанных с доступом к памяти. Тут же рассматривается структура двоичного дерева, префиксного дерева и работа со сжатием файлов.
13-я лекция: о хэшировании данных, сетевых протоколах и о том, как при помощи зашифрованных соединений защитить себя от подозрительных незнакомцев.
14-я лекция: введение в веб-программирование и знакомство с языками HTML и CSS. Впервые в истории студенты двух учебных заведений — Гарварда и Йеля — при помощи современных технологий параллельно проходят обучение на курсе.
15-я лекция: знакомство с языком программирования PHP и языком разметки HTML.
16-я лекция: продолжение рассмотрения языка PHP, теперь для разработки веб-приложений, а также знакомство с базами данных и MySQL.
17-я лекция: продолжение знакомства с базами данных SQL.
18-я лекция: введение в JavaScrip tи программирование на стороне клиента.
19-я лекция: продолжается знакомство с языком JavaScrip , а также демонстрируется использование компьютерных технологий в сфере археологии.
20-я лекция: рассматривается тема компьютерной безопасности: излагаются основы личной безопасности в Интернете, принципы работы с паролями, объясняется специфика вредоносного программного обеспечения. Также в лекции затрагиваются проблемы неприкосновенности личных данных в современную цифровую эпоху, в том числе в общественно-политическом контексте.
21-я лекция: профессор Сказелатти из Йельского Университета рассказывает о системах обработки естественных языков. В лекции рассматриваются алгоритмы распознавания речи, раскрывается понятие статистических моделей распознавания речи, скрытых марковских моделей, вопросно-ответной системы, семантической обработки текста, а также затрагивается тема создания систем невербального общения.
22-я лекция: профессор Сказелатти из Йельского Университета демонстрирует использование искусственного интеллекта в играх. В лекции рассматриваются алгоритмы минимакс и альфа-бета-отсечение, а также разбирается игра робота в крестики-нолики.
23-я лекция: подводятся итоги курса, в игровой форме повторяются некоторые темы, идет непринужденное общение.

3659

Пасьянс «Солитёр» для Windows создал заскучавший стажёр

Развернуть
YouTube-канал Great Big Story вспомнил историю создания знаменитого компьютерного пасьянса и взял интервью у его создателя.
Пасьянс «Солитёр» для Windows создал заскучавший стажёр
Сотрудник Microsoft и автор книг о компьютерных приложениях Крис Селлз в 2004 году назвал карточную игру «Солитёр» самым используемым приложением Windows. Но создал её не гениальный программист и не группа сотрудников, работавших над проектом полный рабочий день, а стажёр Microsoft Уэс Черри.

По словам Черри, его стажировка была всеобъемлющей, однако у него всё же оставалось свободное время. Разработчик признался, что решил написать «Солитёра» от скуки.

"В то время игр существовало мало, и приходилось создавать их самостоятельно".

Уэс Черри, создатель пасьянса «Солитер»

Уэс Черри создал в своём приложении специальную «защиту от начальника». При нажатии определённой клавиши стол с колодой карт исчезал, а на экране появлялись куски кода. Однако впоследствии компания заставила его убрать эту функцию.
Руководство Microsoft, в том числе глава компании Билл Гейтс, оценило игру очень высоко и включало её во все версии Windows, кроме Windows 8.

"Билл Гейтс играл в «Солитёр» и сказал, что в нём слишком тяжело победить".

Уэс Черри, создатель пасьянса «Солитёр»

Несмотря на успех игры, Уэс Черри не получил за своё творение ни цента. Он ушёл из компьютерной индустрии и стал владельцем магазина, продающего сидр.
1616

Название

Развернуть
Есть у нас программа аналитики. Коллега пишет программу для выдачи прав в этой программе с помощью стандартной виндусовой утилиты. И тут он выдает:
- Не знаю как программу назвать, anal cacls или cacls anal.
Посмеялись немного, и он ушел курить. Вернулся и добивает:
- Еще придумал analitic service security (ass), но все равно жопа какая-то получается...
2036

NASA открыло свободный доступ к своему программному обеспечению

Развернуть
NASA открыло свободный доступ к каталогу программного обеспечения 2017-2018. Как говорится в официальном сообщении все программные продукты и алгоритмы могут использоваться совершенно бесплатно.
NASA открыло свободный доступ к своему программному обеспечению
В каталоге представлено большое количество различных типов программного обеспечения.
NASA открыло свободный доступ к своему программному обеспечению
Несмотря на то, что доступ открытый, существуют лицензионные ограничения. Например, некоторое программное обеспечение доступно только для США.
В то же время некоторые open source доступны на github. Например, проект «Worldview» satellite imagery browsing and downloading tool разработанный для интерактивного просмотра и скачивания изображений, получаемых со спутников NASA.
NASA открыло свободный доступ к своему программному обеспечению
Помимо программного обеспечения на сайте NASA размещены наборы 3D моделей, изображений и текстур, которые можно бесплатно использовать в личных или учебных целях.
NASA открыло свободный доступ к своему программному обеспечению
https://m.geektimes.ru/post/286524/
621

Чёрно-белые дни фрилансера

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


История первая (белая):

В самом начале, из-за моей неопытности, за которую было довольно стыдно перед клиентом, у меня случился затык на одном из этапов разработки (не смертельный, я бы разобрался, но время шло, клиент спешил), так клиент со словами "давайте научу" отправил мне пару релевантных мануалов и это значительно ускорило процесс. Ни наездов, ни обвинений, ни упрёков, но оплата в полном размере и исключительная доброжелательность. Работали вместе не в последний раз.
________________________

История вторая (чёрная):

Тут в форме затяжного диалога.
- Мне нужно сделать вот это.
- Хорошо, сделаем.
- Но не совсем это, а немного отличающееся от этого, а ещё вот это.
- Как отличающееся? Второе "вот это" делать как в примере?
- Не совсем, должно отличаться.
- Как? И что по первому вопросу?
- Так и так, а ещё нужно вот это третье сделать. А часть из того, о чём я раньше писал, я уже сделал сам.
- Так что всё-таки нужно сделать?
- У вас же всё в переписках есть, зачем спрашиваете?
- Извините, но переписка растянулась на две недели, часть работ потеряла актуальность, по части возникли вопросы, уточнения на которые вы не дали. Можете подытожить работу, составить тз?
- Нет, у вас всё есть в переписках.
- Хорошо, давайте я составлю тз, а вы посмотрите утвердите, но так уйдёт больше моего времени и вся работа будет стоить дороже.
- Мне это не подходит. Всего доброго.
________________________

История третья (белая):

Нужно было слизать слайдер у конкурентов - элементарнейшая дешёвая работа. Но в процессе выполнения у меня упал интернет, после часовых разбирательств с провайдером интернет вернулся, а скайп полнился сообщениями "возникли какие-то трудности?", "вы не заморачивайтесь так сильно, если что-то не так", "если не получается, то не переживайте, со всеми бывает, деньги я назад требовать не стану".
________________________

История четвёртая (чёрная):

- Сделайте мне крутой продающий сайт на основе этого.
- Хорошо, вот он - готов.
Проходит неделя.
- Вы говно какое-то сделали, с вашего этого сайта ни один клиент не позвонил! Зато с моего старого, который вы раскритиковали за дизайн и юзабилити, звонки так и прут.
Лезу в аналитику, проверяю посетителей и звонки с сайта - на новом сайте конверсия составляет 4,5%,тогда как на старом 1,5%. Показываю клиенту.
- Ничё не знаю, я в этих ваших сложных технических примочках не понимаю. У меня есть две линии - для первого и для второго сайта. Один телефон молчит всю неделю, другой разрывается, некоторые клиенты даже пробиться не могут.
- Так у вас же на обоих сайтах указан один и тот же номер телефона.
- Что?! Так я ещё из-за вас деньги теряю? Потому что вы указали тот же номер телефона?!
- Второй сайт делался на основе первого, вплоть до переноса всех данных. Откуда мне было знать, что будет другой номер телефона, если вы этот момент никак не упомянули?
- Это ваши проблемы, меня это не волнует. Верните деньги и скажите спасибо, что я свои убытки на вас не повешу.
________________________

История пятая (белая):

- Напишите нам скрипт для обработки входящих данных и вывода элементов, в зависимости от этих данных.
Клиент кидает пустую страницу.
- А какие данные? Какие элементы?
- Это потом будет решаться, напишите структуру с заглушками, мы сами донастроим.
Жутко не люблю таких клиентов. Обычно они "сами донастраивают", когда жалеют деньги на работу под ключ, а в процессе спотыкаются об код, разносят его в клочья и остаются крайне недовольны. В итоге постоянно возникает ситуация, когда заплатили один раз за начальный этап разработки, а потом ещё весь мозг перетрахали последующими вопросами. Тут тоже было много споров, но в итоге я на свой страх и риск согласился.
Закончил работу, жду день, второй, третий - тишина. Открываю страницу, а там на месте белого полотна разрослась внушительная вёрстка, принимается большой поток данных, элементы фильтруются и сортируются, код скрипта увеличился раз в тридцать, но в основе всего этого - моя структура. Разобрались, размножили, настроили, не задали ни одного вопроса.
________________________

История шестая (чёрная):

По аналогии с предыдущей - попросили основу, обещали донастроить самостоятельно. В итоге сообщения вида:
- Я полез менять, там всё сломалось, у вас плохой код, верните деньги.
Проверил скрипт, человек банально сломал синтаксис, не поставив закрывающую кавычку в одном месте. Указал на это и получил ответ:
- Это не важно, я уже всё удалил, больше не будем сотрудничать. Ваша работа не понадобилась - верните деньги.
________________________

История седьмая (белая):

- Нужно сделать первую вещь, вторую вещь и третью вещь.
- За все три стоимость будет вот такая.
- Хорошо, оплатил.
- Первая и вторая вещи готовы, третью сделаю завтра.
- Знаете, я тут сам вчера просматривал, как это сделать, и, кажется, понял. Давайте я сам попробую, мне полезнее будет, деньги возвращать не нужно. Спасибо за работу.
- Хорошо, если возникнут трудности или что-то не получится - обязательно пишите.
________________________

История восьмая (чёрная):

Клиент заказал администрирование сайта с самописной админкой. Заменить текста, обновить контактные данные, по мелочи. Полез ковыряться... Из админки на меня смотрел бабуиний код, написанный мартышкой, обучавшейся у потомственного индуса. Кривой код был положен в основу всего сайта, потом множился и спаривался с новым кривым кодом, но, судя по его виду, никогда не оптимизировался. И для правки даже текстов нужно было лезть к этой мартышке в задницу. На понимание принципов работы этого ада ушло добрых часа три, после чего я выставил клиенту ценник с учётом этих временных трат и упомянул, что дальше будет дешевле, потому что я пока знакомлюсь с админкой и закономерно уходит больше времени.
- Что?! Какие тысячи? Это мелкие правки, я готов платить максимум по десять рублей за текст и только ради экономии собственного времени, а за вашу некомпетентность переплачивать не намерен.
В общем, это он написал админку и, понятное дело, для него там всё было понятно. Распрощались быстро.
________________________

История девятая (белая):

Обращается клиент, тоже с самописной админкой.
- Админку нам на заказ сделал программист, но сейчас у него другие проекты, мы больше не сотрудничаем.
- На изучение мне потребуется время и работа в зависимости от этого времени будет дороже.
- Конечно, нам программист перед прекращением сотрудничества оставил документацию. Вот и вот.
- Я ознакомлюсь.
- И свои контактные данные. Сказал, что если на что-то не найдётся ответа в документации, то можно связаться с ним.
- Благодарю.
Надо сказать, что код был хороший, чистый, аккуратный и довольно понятный. Даже в документацию особо лазить не приходилось, не говоря уже о том, чтобы кого-то там дёргать.
________________________

История десятая (чёрная):

Самое сладкое напоследок.
Клиент запросил встраивание скрипта какой-то убер-корзины, сделанной на чистом js'е и сразу связанной с несколькими платёжными шлюзами с возможностью переключения между ними. Посмотрел, изучил, назвал цену. Клиента не устроила не столько цена, сколько сам факт её наличия. Он был свято уверен, что при работе с ним я получу бесценный опыт, а также сам скрипт (невероятно востребованный), который впоследствии смогу продавать всем подряд, на чём однажды разбогатею. И на фоне всего этого я должен быть безмерно благодарен за такой шанс, да и вообще заплатить за предоставление этого скрипта, но клиент человек дальновидный, поэтому вместо денег за этот скрипт возьмёт с меня услугу по его внедрению. Распрощались быстро, смеялись долго.
1276

99 онлайн-курсов для инженеров и программистов

Развернуть
В комментариях к прошлой записи () многие говорили о том, что нужно больше курсов по IT. Ловите! Заботливо собраны совместно со всеми, кто в этих темах разбирается лучше меня:) Делитесь своими любимыми курсами в комментариях!

Для начинающих
1. Как выиграть соревнования по программированию: секреты чемпионов (Университет ИТМО, язык курса: английский)
2. Информатика для втузов (Университет ИТМО, язык курса: русский)
3. Основы программирования (Индийский технологический институт Бомбея, язык курса: английский)
4. История, технология и безопасность Интернета (Мичиганский университет, язык курса: английский)
5. Информационные технологии и программирование (Казанский национальный исследовательский технический университет имени А. Н. Туполева, язык курса: русский)
6. Введение в программирование (C++) (Высшая школа экономики, Академия Яндекса, язык курса: русский)
7. Комбинаторика для начинающих (Московский физико-технический институт, язык курса: русский)

Математика и логика
8. Высшая математика. Линейная алгебра и элементы топологии (Московский физико-технический институт, язык курса: русский)
9. Высшая математика. Алгебра: введение в теорию групп (Санкт-Петербургский государственный университет, язык курса: русский)
10. Дискретная математика (Шанхайский университет Джао Тонг, язык курса: английский)
11. Высшая математика. Математический анализ (Московский физико-технический институт, язык курса: русский)
12. Курс математического анализа (первый семестр) (МГУ имени М. В. Ломоносова, язык курса: русский)
13. Математический анализ. Теория функций одной переменной (МГУ имени М. В. Ломоносова, язык курса: русский)

Разработка ПО
14. Программирование на C# (Уральский федеральный университет, язык курса: русский)
15. Постановка задачи на разработку ПО (Mail.Ru Group, язык курса: русский)
16. Программирование для всех (начните с Python) (Мичиганский университет, язык курса: английский)
17. Функциональное программирование: базовый курс (Университет ИТМО, язык курса: русский)
18. Программирование на языке C++ (Санкт‑Петербургский академический университет, язык курса: русский)
19. Функциональное программирование на языке Haskell (Санкт‑Петербургский академический университет, CS центр, язык курса: русский)
20. Базы данных (Санкт-Петербургский государственный университет, язык курса: русский)

Разработка мобильных и веб-приложений
21. Программирование и разработка веб-приложений (Университет ИТМО, язык курса: русский)
22. HTML, CSS и Javascript для веб-разработчиков (Университет Джона Хопкинса, язык курса: английский)
23. Веб-программирование (Университет ИТМО, язык курса: русский)
24. Основы Веб-дизайна и Программирования (Университет Дьюка, язык курса: английский)
25. Как создать сайт за выходные (проектно-ориентированный курс) (Государственный университет штата Нью-Йорк, язык курса: английский)
26. Основы адаптивного веб-сайта; Программирование с помощью HTML, CSS и JavaScript (Голдсмитс, язык курса: английский)
27. Java для Android (Университет Вандербильта, язык курса: английский)

Алгоритмы
28. Математическая логика и теория алгоритмов (Томский государственный университет систем управления и радиоэлектроники, язык курса: русский)
29. Алгоритмы программирования и структуры данных (Университет ИТМО, язык курса: русский)
30. Алгоритмы: теория и практика. Методы (Computer Science Center, язык курса: русский)
31. Алгоритмизация вычислений (Высшая школа экономики, язык курса: русский)
32. Анализ алгоритмов (Принстонский университет, язык курса: английский)
33. Алгоритмы (Индийский технологический институт Бомбея, язык курса: английский)
34. Основы алгоритмов (Калифорнийский университет в Сан-Диего, Высшая школа экономики, язык курса: английский)
35. Основы структур данных (Индийский технологический институт Бомбея, язык курса: английский)

Компьютерная безопасность и сети
36. Протоколы мобильных и конвергентных сетей (Университет ИТМО, язык курса: русский)
37. Разработка безопасных приложений для Android (Саутгемптонский университет, язык курса: английский)
38. Инфокоммуникационные протоколы (Университет ИТМО, язык курса: русский)
39. Кибербезопасность и десять сфер её применения (Система университетов штата Джорджия, язык курса: английский)
40. Безопасность программного обеспечения (Мэрилендский университет в Колледж-Парке, язык курса: английский)
41. Актуальные угрозы компьютерной безопасности (Лаборатория Касперского, язык курса: русский)
42. Информационная безопасность (Лондонский университет, язык курса: английский)
43. Основы кибербезопасности (Технологический институт Рочестер, язык курса: английский)

Дизайн и продукт
44. Геймдизайн: по ту сторону игры (WARGAMING, язык курса: русский)
45. Геймификация (Пенсильванский университет, язык курса: английский, русские субтитры)
46. Принципы геймдизайна (Университет штата Мичиган, язык курса: английский)
47. Разработка, осуществление и анализ экспериментов (Калифорнийский университет в Сан-Диего, язык курса: английский)
48. История дизайна видеоигр (Технологический институт Рочестер, язык курса: английский)
49. Прототипирование и дизайн (Миннесотский университет, язык курса: английский)
50. Основы графического дизайна (Калифорнийский институт искусств, язык курса: английский)
51. Введение в геймдизайн (Калифорнийский институт искусств, язык курса: английский)

Машинное обучение
52. Введение в машинное обучение (Высшая школа экономики, язык курса: русский)
53. Машинное обучение (Стэнфордский университет, язык курса: английский)
54. Основы машинного обучения: обучение на конкретных примерах (Вашингтонский университет, язык курса: английский)
55. Нейронные сети (Институт биоинформатики, язык курса: русский)
56. Машинное обучение (Kaggel, язык курса: английский)
57. Нейронные сети для машинного обучения (Торонтский университет, язык курса: английский)
58. Вычислительная нейробиология (Торонтский университет, язык курса: английский)
59. Анализ данных на практике (Московский физико-технический институт, язык курса: русский)
60. Введение в анализ данных (язык курса: английский, русские субтитры)

Теория вероятности и статистика
61. Введение в теорию вероятностей (Московский физико-технический институт, язык курса: русский)
62. Базовая статистика (Амстердамский университет, язык курса: английский)
63. Эконометрика (Высшая школа экономики, язык курса: русский)
64. Статистический анализ Johns (Университет Джонса Хопкинса, язык курса: английский)
65. Построение выводов по данным (Московский физико-технический институт, язык курса: русский)
66. Введение в статистику (язык курса: английский)
67. Основы статистики (Институт биоинформатики, язык курса: русский)
68. Статистика вывода (Амстердамский университет, язык курса: английский)

Графы
69. Теория графов (Московский физико-технический институт, язык курса: русский)
70. Методы и алгоритмы теории графов (Университет ИТМО, язык курса: русский)
71. Веб-графы и методы работы с ними (Московский физико-технический институт, язык курса: русский)
72. Случайные графы (Московский физико-технический институт, язык курса: русский)
73. Теория кодирования (Московский физико-технический институт, язык курса: русский)
74. Алгоритмы на графах (Калифорнийский университет в Сан-Диего, Высшая школа экономики, язык курса: английский)
75. Теория графов (Московский физико-технический институт, язык курса: русский)

Робототехника
76. Управление мехатронными и робототехническими системами (Университет ИТМО, язык курса: русский)
77. Строим роботов и другие устройства на Arduino. От светофора до 3D-принтера (Московский физико-технический институт, язык курса: русский)
78. Конструирование роботов и устройств на Arduino (Московский физико-технический институт, язык курса: русский)
79. Линейные системы автоматического управления (Университет ИТМО, язык курса: русский)
80. Основы программирования роботов (Московский государственный университет приборостроения и информатики, язык курса: русский)
81. Введение в робототехнику: заставьте роботов двигаться (Квинслендский Технологический Университет, язык курса: английский)
82. Контроль мобильных роботов (Технологический институт Джорджии, язык курса: английский)
83. Инновации в промышленности: мехатроника и робототехника (Национальный исследовательский Томский государственный университет, язык курса: русский)

Физика и астрономия
84. Астрономия: исследуем время и пространство (Аризонский университет, язык курса: английский)
85. Астрономия (Центр Педагогического Мастерства, язык курса: русский)
86. Астрофизика: от звезд до границ Вселенной (Санкт-Петербургский политехнический университет Петра Великого, язык курса: русский)
87. Основы астрономии (МГУ имени М. В. Ломоносова, язык курса: русский)
88. Физика как глобальный проект (Национальный исследовательский ядерный университет «МИФИ», язык курса: русский)
89. От атомов до звезд: как физика объясняет мир (Национальный исследовательский ядерный университет «МИФИ», язык курса: английский, русские субтитры)
90. Звёздная астрономия (МГУ имени М.В. Ломоносова, язык курса: русский)
91. Ядерная физика (Санкт-Петербургский государственный университет, язык курса: русский)
92. Элементы атомной и ядерной физики (Национальный исследовательский ядерный университет «МИФИ», язык курса: русский)

Электроника и радиотехника
93. Современная промышленная электроника (Санкт-Петербургский политехнический университет Петра Великого, язык курса: русский)
94. Введение в электронику (Технологический институт Джорджии, язык курса: английский)
95. Основы электротехники и электроники (Уральский федеральный университет, язык курса: русский)
96. Линейные электрические цепи (Университет ИТМО, язык курса: русский)
97. Электронные материалы и приборы (Массачусетский технологический институт, язык курса: английский)
98. Электрические машины (Университет ИТМО, язык курса: русский)
99. Электродинамика (Уральский федеральный университет, язык курса: русский)
3825

Типичный заказчик

Развернуть
Типичный заказчик
625

Тестирование программ

Развернуть
Тестирование программ
565

Симулятор эволюции на Unity + исходный код

Развернуть
Здравствуйте, товарищи.
Так уж сложилось исторически, что я люблю разного рода извращения. И вот к чему меня это привело в этот раз:
Я написал симулятор эволюции, используя Unity.
Симулятор эволюции на Unity + исходный код GIF
Суть происходящего:
В замкнутую среду помещается клетка, обладающая собственным геномом, состоящим из 64 случайных команд, расположенных в случайном порядке. Клетка выполняет все свои действия в соответствии с геномом. В зависимости от результата выполнения очередной команды, заложенной в гене, клетка переключается на команду в другом гене. Клетки живут в аквариуме, на который светит солнце. Клетки могут фотосинтезировать, чтобы восстанавливать свою энергию. Когда клетка накопит достаточное количество энергии - она делится. Если клетке пора делиться, но она со всех сторон окружена (нет свободного места) - клетка умирает, превращаясь в питательный трупик, который могут сожрать другие клетки.
Если у клетки заканчивается энергия - она умирает, не оставляя за собой трупа. Клетки могут жрать друг друга, и распознавать, родственник перед ними, или нет. При рождении каждой новой клетки есть 25% шанс, что один из её генов мутирует (одна из команд в алгоритме поведения изменится на другую случайную команду). Когда клетка фотосинтезирует - она зеленеет, когда жрёт органику - краснеет.

Всего клетка может выполнять 7 команд:
1 - смотреть прямо перед собой
2 - поворачиваться
3 - двигаться вперёд
4 - жрать объект перед собой
5 - фотосинтезировать
6 - проверять, сколько осталось энергии
7 - размножаться


На следующей гифке изображён аквариум, в котором живёт одна клетка, все гены которой заполнены одной командой - фотосинтез, поэтому она бесконтрольно размножается, оставляя за собой кучи задавленных трупов. Но в какой-то момент появляются клетки-мутанты, которые начинают двигаться и питаться органикой:
Симулятор эволюции на Unity + исходный код GIF
На следующей гифке изображён авариум, почти полностью заваленный трупами "веганов", которые бесконтрольно размножались, и почти довели популяцию до полного вымирания. Но, случайная мутация исправила ситуацию, и в аквариуме появились мясоеды:
Симулятор эволюции на Unity + исходный код GIF
На следующей гифке я поэкспериментировал с гравитацией, сделал так, чтобы трупы опускались на дно. От затеи пришлось отказаться, потому что fps, который и так довольно сильно проседал, сморщился ещё сильнее, как-будто его в ледяную воду опустили:
Симулятор эволюции на Unity + исходный код GIF
Ну и посделедняя гифка. На ней в аквариуме практически сразу появились хищники:
Симулятор эволюции на Unity + исходный код GIF
Как оказалось, наблюдать за развитием о поведением виртуальных клеток - очень увлекательное занятие. Для всех, кому это интересно - оставлю ссылку на репозиторий в комментариях.

Критика по поводу кода принимается. Особенно буду рад услышать советы по оптимизации от компетентных людей.
1798

75-летний программист

Развернуть
75-летний программист. Вы знаете таких? Ехал сегодня в поезде с дедушкой. Путешествует к внучке, которая замужем за военным в Мурманской области, решил скататься, отпраздновать Новый год. Разговорились, оказывается программист. Как и все айтишники сначала пытался рассказать про свою профессию общими словами, так как 90% людей говорят на другом языке. Но когда понял, что я его хорошо понимаю, то очень обрадовался и начал рассказывать, как уже последние 16 лет разрабатывает и модернизирует систему управления крупным строительным холдингом (не в одиночку, но видимо, команда небольшая), получает радость от работы и результата. Конечно, пожаловался на неблагодарных и хитрых пользователей, которые пытаются обмануть систему, "лишь бы ничего не делать" ) Короче, все как у всех настоящих айтишников. Только лет ему больше в 3 раза, чем среднему программисту.
3251

Яндекс плохого не предложит

Развернуть
Яндекс плохого не предложит
4639

Когда удаляешь блок кода, который вроде бы не используется

Развернуть
Когда удаляешь блок кода, который вроде бы не используется GIF
969

Её код доставил людей на луну

Развернуть
Её код доставил людей на луну
Сегодня 80-ти летняя Маргарет Гамильтон была награждена президентской наградой: медаль Свободы.
Под руководством Маргарет Гамильтон писались программы для бортового компьютера Аполлон. В один из самых ответственных моментов миссии Аполлон-11 именно работа Маргарет и ее команды предотвратила возможный срыв высадки на Луну. За три минуты до прилунения лунного модуля сработало несколько аварийных сигнальных устройств. Компьютер был перегружен входящими данными – в стыковочной радарной системе произошло непроизвольное обновление счетчика, что привело к запросу на выполнение компьютером большего числа операций, чем он был способен обработать. Благодаря устойчивой архитектуре компьютер продолжил свою работу: в разработке бортового ПО использовался подход асинхронного исполнения. Процессы с высоким приоритетом (критичные для прилунения) могли прервать низкоприоритетные процессы.
Её код доставил людей на луну
Гамильтон стоит рядом с исходниками кода, которые она и ее команда написали для проекта Аполлон. В этой стопке только код — там нет отчётов по устранению багов и логов.
Её код доставил людей на луну
Маргарет Гамильтон во время её пребывания в качестве ведущего разработчика ПО для Аполлона

Ну и кому интересны исходники ПО для Аполлона 11, смело качаем:
  :)

Спасибо за внимание!
1428

Генетический алгоритм в действии

Развернуть
Авторское описание:
"Эксперимент а области генетических алгоритмов."
И новый ролик автора, только без комментариев:
Авторское описание:
"Пишу код для нового эксперимента с генетическим алгоритмом. Реализовал пока только часть, но уже можно запустить и посмотреть результат.
Цели нет. Боты живут своей жизнью. Энергию получают от "Солнца", либо поедая других ботов. Поедая сородичей, они краснеют. Солнечной энергии много сверху, внизу её мало и недостаточно для поддержания жизни. Боты могут узнавать родствеников, чей код-ДНК отличается не более, чем на 1 байт. Боты размножаются почкованием, когда накопят достаточно энергии. Каждый 4 потомок имеет мутацию в ДНК. Умирают боты, когда кончается энергия или когда нужно почковаться, а вокруг нет свободного места. Трупики - светло-серые.
Youtube ужасно портит видео. Перепробывал разные варианты :("
За видео благодарим товарища foo52ru:

1499

Величайшая программа из когда-либо написанных

Развернуть
Величайшая программа из когда-либо написанных
Как вы думаете, какую из существующих программ можно назвать самой великой? Можете ли вы сказать про одну из своих программ, что она круче всех остальных? Есть мнение и, прямо скажем, далеко не безосновательное, что такую программу написал Дэвид Хорн в 1983 году: шахматы в один килобайт для ZX81.

Дэвид Хорн — это не какая-нибудь байка. Он достиг того, что многие из нас вообще сочли бы невозможным. Он написал шахматы с искусственным интеллектом (!) для плохо документированной и полной багов машины, содержащей всего один килобайт памяти. Мы говорим о Sinclar ZX81.

Задумайтесь на секунду об этом количестве памяти. Один килобайт. 1024 байта. Вы могли бы хотя бы записать правила шахмат менее, чем за тысячу символов? Это сама по себе нетривиальная задача. Запустите свой любимый компилятор и соберите минимальное приложение, которое только возможно. Скорее всего оно уже будет занимать больше одного килобайта, хотя не делает вообще ничего полезного.

Так, подождите-ка. Один килобайт — это же общий объём памяти. Сколько из этого было доступно программисту? Ответ есть по ссылке в конце статьи, пользоваться можно было всего 672 байтами! Даже эта короткая статья занимает больше.

И в этих шахматах был ИИ. Не то чтобы это был очень умный ИИ, но тем не менее он был. То есть программа могла не только показывать доску, проверять правильность ходов, определять победителя (или ничью), но еще и выбирать ходы для себя и разыгрывать их.

Было еще кое-что. Дэвид не только продумал и реализовал идею шахмат в столь малом объеме памяти. Он еще опубликовал их полный исходный код с подробным объяснением того, как именно всё было сделано, в феврале 1983 года в журнале «Your Computer». Эта статья прямо таки погружает нас в захватывающую 8-битную атмосферу тех времён, когда существенные ограничения заставляли программистов писать по настоящему компактный и эффективный код.

Программа:
Источник:
714

Гарвардский курс CS50 на русском: тринадцатая лекция

Развернуть
Шалом! А мы продолжаем публиковать лекции легендарного Гарвардского курса CS50, которые мы переводим и озвучиваем специально для JavaRush.
Представляем новую, 13-ю серию. Напомним, что всего в курсе 24 лекции, постепенно мы переведём все.

Список переведённых лекций:
1-я лекция:
2-я лекция:
3-я лекция:
4-я лекция:
5-я лекция:
6-я лекция:
7-я лекция:
8-я лекция:
9-я лекция:
10-я лекция:
11-я лекция:
12-я лекция:

Подробнее о CS50

На кого рассчитан курс?


Если вы — новичок, пройдите CS50. Если кто-то из ваших знакомых приглядывается к ИТ и программированию, советуйте CS50 не глядя. Я серьезно.

CS50 подойдет любому человеку, кто решил стать «айтишником». Пожалуй, его можно рекомендовать и способным 12-летним, и умудренным опытом «перебежчикам» из других профессий. Идеально — старшеклассникам и студентам.

Курс очень прогрессивный и обновляется из года в год. При этом в отличие от большинства подобных университетских обучающих программ (например, MIT 6.00X) от слушателя не требуются знания университетской математики, достаточно школьного уровня.


Что изучают на CS50?


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

— Концепции алгоритмов и алгоритмичности мышления. Вы узнаете о том, какие задачи можно решать с помощью программирования и каким образом. О бинарном поиске, простом по сути, но очень эффективном и требующем тщательности в реализации, Дэвид Малан расскажет сходу, прямо на нулевой лекции. И попробуйте потом забыть сцену с разрывом телефонного справочника, а вместе с ней — и полученные знания! Вообще, курс охватывает все основные алгоритмы, которые нужно знать и понимать «айтишникам»;

— Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;

— Основы языка программирования C и визуального языка Scratch. Собственно, все основные примеры и задания студенты делают на языке C;

— Основы баз данных и SQL;

— Веб-разработка: основы CSS, HTML, JavaScript и PHP. Естественно, только самые азы;

— Основы подготовки презентации проектов по программированию.


Поддержите нас плюсом и подписывайтесь на нас и сообщество «Наука».  
4985

Примерно так выглядит современная разработка ПО

Развернуть