Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Веб-камеры

С++ как первый язык: путь преподавателя GeekBrains

В мире программирования если не все, то очень многие дороги ведут к Си. Интерпретаторы и компиляторы большинства модных сегодня языков написаны на С/С++. Если вы хотите выжать максимум из любого «железа», программировать роботов, создать свою ОС, свой язык или другую мощную и жадную до ресурсов штуку, надо учить «плюсы». Это де-факто стандарт и в крупных игровых студиях, таких как Electronic Arts и Blizzard.

Но есть ли смысл выбирать С/С++ в качестве первого языка программирования? И откуда взялся вокруг Си ореол неприступности? Я решила обсудить это с преподавателем GeekBrains Иваном Овчинниковым.

Иван начал изучать С++ с нуля в 29 лет. Сейчас ему 33 и он — ведущий специалист и начальник группы программистов в центре разработки информационных систем АО «Российские Космические Системы».

— Иван, в чем, на ваш взгляд, сила «плюсов»? Можно ли сказать, что на сегодня это — «Царь-язык»?

— Я против ранжирования языков, потому что каждый из них решает свои задачи. В целом, языки С/С++ отличает чрезвычайная скорость исполнения и тотальный контроль над происходящим.

Да, можно сказать, что С++ — один из самых влиятельных языков программирования и прародитель многих других ЯП. Это универсальный инструмент, который позволяет подобраться к «железу» ближе, чем любой другой высокоуровневый язык. Вы можете программировать микроконтроллеры и серьезную аппаратуру, ускорять требовательные к ресурсам системы.

— Зачем учить сложный язык, если можно выучить простой? Все наверняка слышали страшилки, что С++ адски сложен и коварен. Что вы об этом думаете?

— Выучить названия всех фреймворков для JavaScript куда сложнее, на мой взгляд!

Прежде всего нужно определиться, зачем вы идете в программирование.

Если у человека программа-максимум — всю жизнь верстать сайты для знакомых или писать попсовые приложеньки для хипстеров, учить С++ совершенно не обязательно. А если вы хотите написать свою операционную систему или программировать роботов, которые полетят в космос и будут кататься по другим планетам — добро пожаловать в С++!

Конечно, С/С++ устроены нетривиально: многое в них не так просто понять и выучить. Но это возможно. И это сильно расширит ваши возможности как программиста.

Опытные разработчики любят пугать новичков «этими жуткими плюсами». Правда в том, что простых языков программирования не бывает, как и простой работы. Любая работа — сложная. Работа программиста — тоже, вне зависимости от выбранного языка. И да, дорогу осилит идущий: если не начать изучать С/С++, они так и останутся невероятно и запредельно сложными.

— Как можно упростить изучение C++ для студентов?

— Понятными объяснениями, которые помогли и мне в свое время. Я ведь стал программистом довольно поздно — в 29 лет. До этого никак не был связан с IT-сферой. Поэтому рассказываю студентам о языке, как рассказал бы себе начинающему.

Есть такой канал на Reddit — ELIF (Explain like I’m five — «Объясни, как пятилетнему»). Так можно сформулировать принцип, по которому я стараюсь доносить до людей сложную информацию, в том числе и про «этот страшный Си».

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

— Как случилось, что к 30 годам вы решили сменить профессию? И почему начали сразу с трудного языка?

— Решение освоить новую специальность пришло быстро и безболезненно. Мук выбора не было, потому что с прошлой профессией при 12-летнем стаже я зарабатывал что-то около 35 тысяч рублей. Это, в принципе, равнялось зарплате начинающего программиста-стажера. А если учесть, что программирование подразумевало интересные для меня задачи, выбор был очевиден.

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

Сейчас профессионально работаю на Java (Spring, VAADIN, EclipseLink). В быту — для себя — очень люблю писать на Python. Например, когда нужен Telegram-бот с напоминалками и детектором, фотографирующим котиков в кадре веб-камеры.

Есть у меня и кусочек умного дома, созданный с использованием Raspberry PI, и маленькая домашняя бухгалтерия на Django. Плюс всякие смешные поделки на Arduino — вроде новогодней елки.

— Сколько времени потребовалось, чтобы начать зарабатывать программированием?

— На поиск первой работы ушло около полугода. Я пришел к работодателю и выложил все как есть: мне 30 и я совсем без опыта, недавно дошел до изучения указателей в С. Попросился работать «за еду и опыт» — взяли. Через три месяца я полностью влился в коллектив и уже обучал коллег, как пользоваться трекерами задач и git-ом.

Огромным плюсом оказалось то, что я попал в молодой коллектив! Большинство ребят недавно выпустились из институтов: у них были еще свежи общие технические знания, а я мог поделиться с ними жизненным опытом. Получился симбиоз.

К тому же у меня в запасе всегда была и остается интересная история, как один тридцатилетний парень решил перевернуть свою жизнь с ног на голову. Начал учить С++, через полгода после устройства на работу — закрыл свое первое ТЗ, а дальше пошло-поехало...

— Какими были ваши первые проекты?

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

Мне поручали мелкие доделки готовых программ для аппаратов, которые недавно вернулись с испытаний.

Опытным разработчикам за такие задачи браться скучно, а мне на тот момент — в самый раз. Мне нравилось, что можно посмотреть на готовый код, сделать что-то полезное, но в глобальном плане ничего не сломать.

— Что считаете самым сложным в изучении С++? Есть какие-то темы, которые, если осилишь, то остальное — не сложнее, чем в других языках?

— На мой взгляд, самые сложные темы в изучении С — это указатели, указатели на указатели и указатели на функции. Если уж про них у вас в голове все встанет на свои места, остальное — детский лепет.

С++ сложно выражает идеи объектно-ориентированного программирования (ООП). Нужно время, чтобы вникнуть, чем отличаются между собой виртуальные, абстрактные, приватные и публичные методы. Еще есть модификаторы видимости и связывания, несколько видов конструкторов и деструкторов. С этим тоже нужно разобраться.

Проблема в том, что учебники и руководства по программированию просто вываливают на студента гору информации и как бы говорят: «Либо ты это все запоминаешь, либо ты бесполезен».

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

Поэтому при подготовке учебного курса по С++ в GeekBrains мы старались оценить материал глазами новичка, который никогда раньше не программировал.

— Я слышала, что в C++ легко допустить ошибки, которые потом очень сложно найти, потому что в языке нет «защиты от дурака». Так ли это? Или главная сложность все-таки в другом? Если говорить именно об особенностях языка, а не о проблемах мотивации студента.

— Да, когда вы работаете с языками типа С/С++, легко наделать ошибок, которые могут годами себя никак не проявлять. Но они связаны не с самим языком или «защитой от дурака», а, скорее, с невнимательностью программиста.

Возьмем, к примеру, потоки ввода-вывода. Их надо закрывать и в Java/C#, и в C++. Если в Java/C# поток не закрыть, он будет висеть и тормозить программу. Если в C++ поток не закрыть, он будет… Да! Висеть и тормозить. А проявится проблема когда? Когда таких незакрытых потоков наберется сотня-другая.

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

— Спрошу как раз о том, что дают курсы. Как вы балансировали учебную программу? У С/С++ очень много применений, а времени на изучение — всего год.

— Конечно, учебная программа будет очень сжатой, потому что, как заметил один мой коллега: «С, как религия — им надо заниматься всю жизнь». Отсюда и акценты — глубокое погружение в основы языка и беглый обзор всех его возможностей. Чтобы и игроделам, и банкирам, и браузерописцам будущим достались полезные знания.

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

Главное, вы будете понимать, как все работает, и узнаете о разных подходах к решению задач. Это заложит фундамент, на котором вы сможете строить то, что вам интересно. Конечно, придется много трудиться самостоятельно: читать, экспериментировать. Но вы уже не «потеряетесь» в языке.

— Я обратила внимание, что в учебном плане первым курсом идет Linux. Основы работы с этой ОС закладываются еще до уроков С/С++. Понятно, что Linux повлиял на многие платформы, в том числе MacOS и Windows. Но почему в курсе С++ такое внимание именно этой ОС?

— Считаю, что Linux — краеугольный камень в изучении программирования. Без знания этой ОС вы не сможете создавать кроссплатформенные приложения, потому что не будете понимать, в каком окружении им предстоит работать. 96 % устройств в интернете — это UNIX-подобные устройства. Куда без них?

UNIX, который стал родителем Linux и MacOS X, был написан на С. Собственно, С для того и создавали, чтобы написать на нем UNIX. Отсюда и свойства языка — его близость к аппаратному обеспечению. Можно сказать, что история развития современных ОС пересекается с историей языка Cи. И на примере Linux это хорошо видно.

Даже если вы твердо решили программировать исключительно для Windows, знание Linux расширит ваши горизонты: позволит посмотреть на дивный новый мир, от которого вы отказываетесь.

— Иван, спасибо! Что скажете в напутствие своим будущим студентам?

— Если вы повелись на рекламу и пришли в программирование только потому, что тут много денег, — остановитесь. Через пару-тройку лет на нелюбимой работе, которая держит лишь финансово, вы просто свихнетесь от тоски. Но! Если кто-то отговаривает вас становиться программистом, а вы этого очень хотите — игнорируйте мнение этих людей и идите к своей цели. Не пожалеете! Желаю вам заниматься тем, что вам нравится. До встреч!

Пройти обучение

11 дек 18, 15:21
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Кто заработает на творчестве искусственного интеллекта?

И как ИИ повлияет на мир искусства в ближайшем будущем.

Это перевод статьи “When Art Created by Artificial Intelligence Sells, Who Gets Paid?” Автор оригинала — Сэм Гаскин.

В конце октября 2018 аукционный дом «Кристис» впервые выставит на торги художественное произведение, созданное искусственным интеллектом. В преддверии этого события в галерее Нью-Дели Nature Morte состоялась первая выставка, полностью посвященная ИИ-искусству. Рынок уже показал заинтересованность, а специалисты задаются вопросами об авторских правах и о том, какие творческие задачи алгоритмам не под силу.

Что такое ИИ-искусство?

Фрагмент картины Марио Клингеманна (Mario Klingemann) “Chicken or Meat? Series 1”, 2018. Права принадлежат автору

Многие создатели AI-искусства используют генеративно-состязательную сеть (англ. Generative adversarial network, GAN). Это алгоритм машинного обучения, в соответствии с которым компьютер изучает библиотеку изображений или звуков и создает на ее основе собственный контент. Затем машина сравнивает свою работу с оригиналами и делает новую попытку, чтобы методом проб и ошибок поэтапно улучшать результат.

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

К примеру, работающий в Мюнхене художник Марио Клингеманн обучал машину на портретах кисти «старых мастеров», а затем предложил ей в качестве исходного материала самого себя — на видео с веб-камеры. На итоговой записи можно видеть последовательность многоглазых шаржированных образов в духе картин британского художника Фрэнсиса Бэкона.

Продажа ИИ-искусства

Фрагмент работы Мемо Актена “Deep Meditations”, 2018. Права на изображение — галерея Nature Morte, Нью-Дели

Живущий в Лондоне турецкий художник Мемо Актен (Memo Akten) одним из первых продал работу, созданную с помощью искусственного интеллекта. В 2016 году на благотворительном аукционе Google в Сан-Франциско картина "GCHQ" принесла Актену 8 000 $. И вот два года спустя «Кристис» готовится выставить ИИ-работу «Портрет Эдмонда Белами» ("Portrait of Edmond Belamy", 2018) парижского арт-коллектива Obvious. Ожидаемая цена лота варьируется от 8 000 до 11 500 $.

Как любая новая форма выражения, AI-искусство пытается отвоевать себе место под рыночным солнцем. Один из директоров галереи Nature Morte Апараджита Джайн (Aparajita Jain) говорит, что во время недавней выставки Gradient Descent использовала «довольно агрессивное» ценообразование, чтобы помочь AI-направлению утвердиться в искусстве. Выставленные работы стоили от 500 до 40 000 $. Эта точка входа заметно ниже обычного для галереи стартового диапазона 10 000–100 000 $.

Среди работ, проданных на выставке, — картина художника Тома Уайта (Tom White) из Веллингтона. Автор создает абстракции в духе Кандинского на основе AI-интерпретации повседневных предметов — вроде биноклей и электровентиляторов.

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

«Я видел, как мою работу покупают люди, непохожие на типичных коллекционеров: ученые, разработчики игр, исследователи компьютерного зрения и ИИ» — комментирует Уайт.

Кто чем владеет?

Том Уайт, "Electric Fan" из серии Perception Engines, 2018. Права на изображение — галерея Nature Morte, Нью-Дели.

В публикациях о Gradient Descent представители галереи заявили, что произведения созданы «исключительно ИИ при участии художников». Представители арт-группы Obvious даже подписали работу не названием своего объединения, а математическим уравнением, которое использовали в алгоритме. Но как бы художникам и галеристам ни нравилось приписывать авторство искусственному интеллекту и подчеркивать, что они не могут дождаться, что еще создаст для них алгоритм, — у закона нет сомнений, кому принадлежат права на работу: человеку или программному обеспечению.

«ИИ — только инструмент, который художники используют так же, как фотографы камеру или Adobe Photoshop», — говорит Джессика Фьельд (Jessica Fjeld), замдиректора в Cyberlaw Clinic при юридическом факультете Гарварда.

«Люди глубоко вовлечены в каждый аспект создания и обучения искусственного интеллекта. Это не изменится ни завтра, ни в обозримом будущем», — объясняет Фьельд. И добавляет: «Меня больше интересует не то, может ли программа считаться автором по закону, а то, кто из всех вовлеченных людей получает в итоге права на конечное произведение».

По итогам совместного исследования Фьельд и Мейсон Кортц (Mason Kortz) назвали четыре ключевые составляющие AI-искусства, на каждую из которых так или иначе распространяется авторское право:

  1. Вводные данные.
  2. Алгоритм обучения.
  3. Обученная нейронная сеть.
  4. Полученные результаты.

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

Права на код

Фрагмент работы Харшита Агравала (Harshit Agrawal) "The Anatomy Lesson of Dr. Algorithm", 2018. Галерея Nature Morte, Нью-Дели

Большинство ИИ-работ создаются с помощью инструментов c открытым кодом, таких как Google TensorFlow и Facebook Torch. Но, по словам Джессики Фьельд, художники, которые создают собственные алгоритмы (2-я и 3-я составляющие AI-искусства), как Том Уайт, владеют правами еще и на код.

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

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

«Одна из главных проблем в обслуживании ИИ — фреймворки очень быстро обновляются, и со временем модель обученной нейросети оказывается перегружена», — объясняет Харшит Агравал, участник выставки Gradient Descent. Художник живет и работает в Бангалоре.

Его коллегу Актена особенно беспокоит ситуация с работами, при создании которых используются веб-технологии и «нужно проводить данные через сервисы типа Google Translate или API облачного сервиса Microsoft для распознания лиц». Художник добавляет, что это же относится к сервисам Amazon Cloud и ныне неработающему Vine.

«Я уже знаю о нескольких работах, которые “умерли” из-за обновлений или остановки облачного API», — подытожил он. Решением может стать отношение к AI-работе как перформансу. «Они [перформансы] длятся, сколько позволяет технология, а потом заканчиваются. Нам остаются воспоминания и документация».

Права на базу входных данных

Работа Анны Ридлер (Anna Ridler) "Untitled (from the Second training set)" из серии «Падение дома Ашеров», 2018. Галерея Nature Morte, Нью-Дели

Многие художники в работе с ИИ используют банки изображений и аудиозаписей, которые стали общественным достоянием. Популярные примеры: ImageNet, SoundNet и Google Art. Одна из причин избегать авторских изображений при обучении нейросети (составляющая 1) — результат может получиться слишком похожим на один из оригиналов.

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

Как заявил куратор выставки Gradient Descent Картик Кальянараман, теоретически, если ИИ-художники не копируют изображения или аудиозаписи как таковые, обучение на защищенных авторским правом работах не должно считаться нарушением. Точно так же, как студенты-художники имеют право учиться по образцам из книг и Музея современного искусства (MoMA). Принцип fair use подкрепляет юридические позиции художников, использующих чужой материал в качестве исходника. «С прагматической точки зрения и ради полной правовой чистоты я настаиваю, чтобы изображения в базе образцов [для выставляемых работ] были свободны от авторского права», — уточняет Кальянараман.

Анна Ридлер — еще один художник-участник Gradient Descent — соблюдает еще более строгую «правовую гигиену». Она обучает ИИ только по сделанным ею же наброскам и фотографиям. «Формирование базы данных — что включать, а что нет — тоже творчество и важная часть работы», — объясняет она. И заключает: «Поскольку эти базы сами по себе являются художественными произведениями (они созданы мной), повторить мою работу другому автору практически невозможно».

ИИ повлияет на весь рынок искусства

“Portrait of Edmond de Belamy”, 2018. Опубликовано группой Obvious Art, Париж. Права на изображение — Christie‘s

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

Кальянараман считает, что с приходом новой технологии преобразится искусство, не связанное с ИИ. Так же изобретение фотографии когда-то повлияло на развитие живописи: дало начало импрессионизму, экспрессионизму и другим школам, заинтересованным в выражении эмоций и уникального человеческого восприятия. По мнению художника, использование ИИ приведет к появлению в живописи форм, подобных роману, и даже неожиданных и провокационных концептуальных работ. Ведь такое искусство — прямая визуализация описания.

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

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

«Все наше восприятие насыщено эмоциями», — замечает Кальянараман. В этом плане искусственному интеллекту будет сложно приблизиться к живым авторам.

Пройти обучение

10 окт 18, 14:48
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Показаны все темы: 2

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru