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

Постов: 101 Рейтинг: 195593
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

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

Развернуть
333

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

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

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

1-я лекция:
2-я лекция:
3-я лекция:
4-я лекция:
5-я лекция:
6-я лекция:
7-я лекция:
8-я лекция:
9-я лекция:
10-я лекция:
11-я лекция:

Подробнее о CS50
На кого рассчитан курс?

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

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

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

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

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

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

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

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

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

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

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


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

Спасение принцессы на 8 языках программирования

Развернуть
Спасение принцессы на 8 языках программирования
2153

А действительно...

Развернуть
А действительно...
1230

"Войти в IT" или о скрытых лохотронах нашего времени

Развернуть
По поводу дня программиста решил осветить для пикабушников редко затрагиваемую тему, а именно - образовательный лохотрон именуемый IT курсами.

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

В общем, поговорим о продавцах "мечты" :)
Далее я буду не поминать лихом GeekBrains. Не потому, что они самые плохие, но потому, что именно их реклама висит на главной странице в этот день. Вы можете поменять их название на любое другое, суть не изменится.
Вы наверняка множество раз встречали по всему интернету заголовки в стиле "Освой Python за неделю" или "Стань Java разработчиком за месяц" со счастливыми историями о том, как некий Вася работал кондуктором, а потом прошёл курс и теперь он работает удалённо попивая смузи под пальмой в Тайланде? Не верьте им, "тут всё не так однозначно".
И пусть интернет забит отзывами вроде этого, но слуги дьявола под названием "маркетологи" сумеют продать любое говно в красиво оформленном фантике.

А любая какашка в фантике сулит нам следующие три гешефта - образование, сертификат и трудоустройство. Что из этого правда, а что ложь?
Вы надеетесь располагать конкурентными знаниями по завершению курсов, это основная мотивация - надежда на то, что на курсе всё популярно разжуют и объяснят. Вам ведь уже пообещали, что IT это легко.

Как правило, сам курс состоит из материала и ведущего преподавателя.

Материалы:

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

Ещё одна важная вещь - темы на которые ведётся обучение. Курсы учат языкам программирования, но не программированию, курсы учат инструментам, но не технологиям которые эти инструменты создают.

К чему это приводит на практике? GeekBrains будет вас учить AngularJS, а он уже год как никому не нужен. GeekBrains будет учить вас языку, но на рынке уже давно его другая спецификация.

Вы будете не нужны на рынке, но курсам на это плевать. Вы будете бесконечно учить устаревающие инструменты и стоять на месте, но курсы не против, вы же платите.

Преподаватели:

Преподавателем должен быть кто-то профессиональный и опытный. Именно на такого преподавателя вы рассчитываете заплатив приличную сумму. Однако профессионалу в сфере IT нельзя сказать "Мало платят? Идите в бизнес!", они просят денег. Размер оплаты эквивалентен или превышает их текущий почасовой рейт.
Но сколько может предложить курс?

Конкретно мне как-то раз позвонили и предложили 15 000р. за 16 часов преподавания. На первый взгляд человека со стороны это может показаться хорошими деньгами, но смысл в том, что специалист может заработать за это же время гораздо больше, при этом попивая чаёк и не тратя нервы.

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

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

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

Разумеется, найти актуальную статистику трудоустройства с курсов в открытом доступе найти трудно (кто же её выложит). Но как пример приведу украинский аналог , далее цитата:

С момента анонса в декабре 2015 года заявки на участие в программе подали более 26 000 человек. Из них 420 человек прошли отбор и поступили на обучение по программе CS50 Гарвардского университета. На сегодня выпустились 140 участников первой волны, некоторые группы еще доучиваются. Фонд ведет переговоры с партнерами, чтобы устроить на стажировку в реальные проекты самых успешных выпускников. На сегодня 18 участников программы уже проходят стажировку в украинских IT-компаниях, еще 6 человек получили работу.
Признаюсь, не слишком удачный пример, но 26 000 в 6 человек... Это эпично.

А что про зарплаты? На главной странице GeekBrains красивые цифры о средних заплатах программистов, но никто не скажет вам, что это средние зарплаты опытных специалистов с большим стажем. И вот, вы начинаете серьёзно искать работу после курсов и оказывается, что Junior программистов почти никто не ищет, а кто ищет, тот даёт в разы меньшие деньги. Да ещё и оказывается, что вы никакой не Junior, а какой-то там Trainee и вас постараются нанять за еду.
Если вы заметили, до кризиса подобных компаний было гораздо меньше, а пикабушники из Украины и Белорусии подтвердят - в их странах эта тема подогревается гораздо более активно (вплоть до лозунгов "Мы - IT нация").

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

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

Ищите курсы созданные при больших IT компаниях (Яндекс, Mail.ru, HH, badoo, etc). Они как правило бесплатны, имеют актуальный набор знаний и действительно могут трудоустроить вас в случае вашего успеха.

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

В IT много денег, IT это весело, IT это просто, IT это решение всех ваших проблем - "вайти в айти" прямо сейчас! И вот, очередной парень питается дошираками, чтобы оплатить ненужные ему курсы.
Сначала о земном - деньгах: Здесь более актуальная информация для России (было бы мерзко убеждать человека чья зарплата 4 000грн., что получать 80 000грн. в месяц это не райская жизнь наяву). В России же разброс зарплат не так велик, даже хорошо оплачиваемые программисты не так уж далеко ушли от, например, менеджеров.

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

С деньгами всё, теперь о самом коварном - опыте: Вы закончили курсы, прочли 10 учебников и заимели пару лет опыта? Вы ничего не знаете. Вы прочли 30 книг и у вас уже пять лет опыта? Вы ничего не знаете. Вы выучили тот модный фреймворк? А он давно не модный и никому уже не нужен.

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

Товарищи, я мог написать сумбурно (на часах уже 9:00, а я ещё не спал), возможно где-то я был не прав, где-то можно прикопаться к частностям. Я не хотел никого задеть и никого очернить, главный и единственный посыл этой статьи один - не давайте жуликам спекулировать на ваших мечтах и желаниях, не ищите лёгких путей и добивайтесь своего.

Кто я сам такой? Увы, не Джон Резиг и не Дэн Абрамов, просто с восьмью годами опыта (знаю, сам ещё зелен :), желающий только лучшего юным падаванам. Всем добра.
767

Выпускник российского вуза выиграл олимпиаду Google по программированию третий раз подряд

Развернуть
Студент Санкт-Петербургского университета информационных технологий, механики и оптики выиграл международную олимпиаду по программированию Google Code Jam третий раз подряд.
Выпускник российского вуза выиграл олимпиаду Google по программированию третий раз подряд
Победитель престижного соревнования

Победителем престижного ежегодного соревнования по программированию Google Code Jam, финал которого прошел в офисе компании Google в Нью-Йорке 5 августа 2016 г., стал выпускник Санкт-Петербургского университета информационных технологий, механики и оптики (ИТМО) Геннадий Короткевич.

В топ-15 лидеров вошли и другие выпускники петербургского вуза: Евгений Капун занял четвертое место, а Павел Маврин стал тринадцатым, сообщили в ИТМО.
Короткевич получил денежный приз в размере $15 тыс. и право участвовать в финале Code Jam Finals 2017 без предварительного отбора для защиты титула.

Особенности соревнования

Google Code Jam ведут свою историю с 2003 г. В настоящее время 25 финалистов отбираются посредством нескольких раундов из десятков тысяч участников, имеющих Google-аккаунт и изначально зарегистрированных в квалификационном туре. Помимо прочего, победитель получает возможность трудоустройства в Google.

— рассказала тьютор кафедры компьютерных технологий ИТМО Лидия Перовская.

— добавила она.

Стоит также отметить, что в отличие от большинства соревнований по программированию, участники Google Code Jam могут использовать любой язык программирования и среду разработки для решения задач.

Другие победы Короткевича

Короткевич стал первым, кто выиграл Google Code Jam три раза подряд — с 2014 по 2016 г.г. Три года подряд — в 2013, 2014 и 2015 г.г. он выиграл чемпионат «Яндекс.Алгоритм», а в 2016 г. вышел в финал, но не занял призового места. Кроме того, он является двукратным чемпионом (в 2013 и 2015 г.г.) International Collegiate Programming Contest (ICPC) — чемпионата мира по спортивному программированию среди команд университетов, в составе команды ИТМО. В 2015 г. команда Короткевича решила все 13 задач из предложенных.

1031

Гаечный ключ

Развернуть
Обсуждение топа языков программирования:

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

yyy: Вы не умеете закручивать шурупы гаечным ключом? И вы называете себя программистом?
1474

Пацан сказал - пацана сделал. 10 лекций по C#. Без регистрации и СМС.

Развернуть
Я тут почти месяц назад заявил что проведу курс по С# для всех желающих. И я его провёл. А ещё круче всего то, что удалось посотрудничать с ВШБИ и они нам дали аудиторию для живой лекции. В итоге финальная лекция по Unity проходили в живую в МСК, на которую пришло где-то 30 пикабушников. И это круто. :)

Всего записалось почти 3000 участников. На первую лекцию пришло примерно 700. В записи её посмотрели 7000 человек.

В итоге, на последней онлайн лекции было 60-70 человек. А на последней живой 30. Что дальше? Дальше я хочу провести курс по Unity с учётом всех ошибок которые были на С#. И в добавок со всеми участниками июльских занятий C# попробуем сделать совместный проект. Общаемся мы кстати в телеграмме, здесь -

Задавайте вопросы, столько всего произошло за это время. Даже и не знаю что рассказать. По этому пока просто прикрепляю все видосы.
"Раньше говорили что не попрёт теперь что скоро пройдёт" ©