...
...

Разбирая почту...

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

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

"Я считаю, что нужно как можно больше писать о планировании, а не о разработке... Сейчас я руковожу небольшой командой Х (автор просил не указывать название при печати в газете. — Прим. авт.), все мы, конечно, считаем время и деньги… Все наши первые ошибки заключались именно в том, что никто не собирался за круглым столом и не обсуждал план действий. Все было сосредоточено вокруг одного человека, который все тянул на себе и все держал у себя в голове. Он командовал, мог поменять техзадание в процессе его выполнения... На его мнения мог повлиять любой сторонний человек, с которым он переписывался или приглашал в команду… А результаты никого не устроили, даже издателя, и так несколько раз подряд. Сейчас мы создали отдельную команду… На первых порах мне попалась книга, посвященная разработке игр, половина которой была посвящена именно начальному планированию. Открыв "Компьютерную газету", я увидел, что вы пишете именно о том же. Это очень правильно…"

И так далее… Хотя на самом деле очень редко бывает ситуация: открыл книгу — и все понял. Мало того, все самые лучшие книги как по разработке игр, так и собственно по программированию являются не чем иным, как описаниями собственного опыта, обменом этим опытом с читателями. Это является основной ценностью. В тех же материалах по ИИ мы вводили понятие "экспертных систем", что очень близко к тому, что обсуждается сейчас. Конечно, есть базис, который выражен в определенных технологиях и подходах, но оптимальное его использование — это уже другая область. Например, некоторые книги по программированию на С++ просто невозможно читать, в то время как другие являются кладезем информации и учат именно программированию. Теперь перейдем и к другой почте…

Вопросы не по статье, а по вашему профессиональному пути. Можете не отвечать... знаю, как не любят слушать ламеров. Когда Вы заинтересовались программированием? Почему Вы не стали программистом? Или Вы параллельно работаете где-то? Может ли пригодиться программер со знанием языков Java, C++, .NET и без диплома? Какова вероятность?

А вообще, если не сложно, просто напишите, как вы учились программированию, что читали, и для тех, кто успел "сгореть". Это уже у меня было. Просто кайф было решать первые задачки и быстрее других, и лучше других. Потом это быстро надоело. Но сейчас не дождусь продолжить обучение на курсах. Можно ли вообще в Беларуси без диплома с одной инфой в котелке куда-то податься, а после выше подняться, т.е. с опытом, но без диплома. Наверное, нет? И даже самоучительством можно и не заниматься: нет диплома — нет мечты:-(. А может, проскользнуть можно... Есть ли альтернатива?


Я уже не раз говорил, что отвечать на вопросы "ламеров", или, говоря более простым языком, начинающих специалистов, всегда рад. Единственное, что не очень приемлю — когда письма содержат много орфографических ошибок. Теперь кратко по вопросам… Программирую с детства, хотя, поступая в вуз, выбрал специальность, которая не была связана не только с ним, но и с моей последующей деятельностью. Причем, учась в институте, уже осваивал различные IDE и выполнял сторонние заказы. Хотя изначально практически насильно изучил С — в той же середине 90-х в возможности Delphi по простоте создания Windows-приложений нельзя было не влюбиться, а потребности в этих продуктах были очень большими. Дальнейшая моя карьера плотно связалась со звукорежиссурой и аранжировкой на базе компьютера. В результате я стал звукорежиссером высшей категории, поработал с множеством музыкальных проектов, увлекся ИТ-журналистикой. Но на самом деле это не являлось моей основной профессией во внутреннем понимании. Тем более, могу отметить, что звукорежиссура и аранжировка как таковые не являются особенно прибыльными, к тому же, они сейчас достаточно сильно автоматизировались, то есть предложения намного выше спроса. Очень многое зависит от удачных заказов, а также от существующей политики выпускающих лэйблов, состояния "эстрады" и т.д. Поэтому сторонние заказы на создание программ или их отдельных модулей приходилось делать всегда, зачастую на новых языках, скриптах и технологиях, которые приходилось осваивать дополнительно. Звукорежиссура, аранжировка, ИТ- журналистика, программирование… Что их объединяет? Это наиболее востребованные сегменты в фрилансе. То есть переход из одного рабочего состояния в другое не представляет собой какой-либо сложности по поиску работы и сотрудничества. Даже более того: в этом они очень подобны.

Насчет диплома. Диплом по специальности "программирование" вам поможет практически всегда, хотя и без него, имея высшее техническое образование и голову на плечах, вы найдете необходимую работу. За свою жизнь я видел очень много великолепных программистов, которые закончили вузы по совершенно различным специальностям, не связанным с программированием, и при этом они действительно являются лучшими. Если вы имеете в виду диплом как таковой, то есть нужно ли высшее образование? А где еще вы можете освоить ту же высшую математику, кроме как в техническом вузе? Помимо этого, именно там вы научитесь осваивать большие объемы сложной документации. Это приобретаемый полезный навык. Вообще наличие высшего образование формально указывает на уровень развития человека как такового. То есть, не имея его, даже при семи пядях во лбу вам нужно будет постоянно доказывать свой уровень. Возвращаясь к теме "не по специальности", могу отметить, что у нас все несколько перевернуто. Например, во многих западных странах полноценным программистом считается специалист старше 30 лет, в то время как у нас 35 почему-то является неким возрастным пределом, после которого и работу-то найти новую трудно, а работодатели предпочитают брать студентов последних курсов либо только что выпускников. То же самое относится к требованиям по "корочкам" — например, если вы не "программист" или не "математик" по ним, то ряд компаний вас просто не возьмут. В то время как другие, наоборот, предпочитают опытных специалистов и, если говорят о в/о, то просто упоминают "техническое". А в рамках того же фриланса (где вы можете этого опыта набрать, сколько сможете унести) у вас вообще не спрашивают "корочки" — важнее, чтобы вы показали достойное портфолио либо же прошли промежуточные тестовые задания, то есть показали, что вы подходите под выполнение определенной задачи. А это интересует заказчиков в первую очередь. То есть главным образом вам нужно определиться, куда вы хотите двигаться дальше.

На самом деле это письмо с вопросами написал школьник, который только начинает свой путь, при этом хочет начать формировать свое образование с книг, потому как, судя по его словам, учительница не может ничего дать в плане знаний. К сожалению, я не знаю, откуда он, потому как, например, в Минске есть некоторое количество специализированных курсов для начинающих программистов, в том числе и школьников, часть из которых бесплатны. Если не ошибаюсь, остались еще кружки, они есть и при некоторых школах. Конечно, это было давно, но, когда мне было примерно 12-13 лет, а это 88- 89 гг. (до нашей эры:)), то я ходил на Станцию Юных Техников, изучал там Бейсик. Думаю, что не все так сильно и изменилось с тех пор за исключением того, что программисты востребованы в плане своей профессии, и она сейчас широко известна. Ну что ж, продолжим читать это письмо…

А можете ли назвать книги или сайты, которые в корне скажут, как содержится память в компьютере, ведь я не верю, что, например, название *C:\Program Files\Winamp\Skins\Winamp Modern\player* — это координаты нахождения на жестком диске какой-либо инфы. Это убивает. А если хакер хочет испортить юзеру БИОС? Ведь это страшней зараженной винды, верно? БИОС никак нельзя испортить? Это глупость юзерская? Я пойму. Но такие вопросы... вот почему мне хотелось бы найти способ дотянуться до этого МАЛЕНЬКОГО бита. Или найти способ примитивной, никому не нужной, веточки. Эти книги не существуют? Я их не пойму? Это верно, но только так я хотя б найду основу, что-то общее с тем, что я постоянно вижу эти символы, винду. Как будто компьютер — это телевизор с картинками, двигающимися по твоему желанию.

На самом деле не очень понял, пытаюсь разобраться. Итак, хакер никогда ничего не будет ломать на компьютере юзера. Слово "хакер" обозначает специалиста, который полноценно понимает всю внутреннюю структуру работы компьютера и ПО, не более того. Если эти знания направлены во вред, то данный специалист становится киберпреступником. Насчет организации памяти на компьютере, как организована файловая система, и что такое BIOS, в популярной форме объясняют книги серии "ПК для начинающих" — все остальное вам могут рассказать хорошие учебники по С и в ряде случаев по С++. Сравнение компьютера с телевизором с передвигающимися картинками на самом деле очень уместно. Именно так он должен выглядеть для конечного пользователя, и именно к этому стремится множество разработчиков софта.

Одна моя учительница сейчас устроилась в крупную компанию… Я таких законов не пойму — зачем программеру знать этот оффис от Мелкомягких? Ну, эти вопросы не к вам, конечно же... но языки ведь главное, плюс навык.

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

Я не всегда понимаю задачки типа миссионеров и каннибалов. Тут же предельно просто… Если есть каннибалов больше, чем миссионеров, то задачу не решить... А так начиная с переправленного миссионера и каннибала у штурвала чередуя всех переправить:
каннибал за штурвал;
переправка миссионера;
переправка каннибала;
и т.д.
Откуда споры, о которых вы писали?


В буквальном смысле, как вы представляете, задача не является сложной, даже более того, имеет несколько решений. Но… дело в том, что в качестве состояний вы приняли во внимание только два, а именно число людей на берегах, не считая еще двух существенных. Возможно, это и из-за иллюстрации, где дерево было показано только в первых узлах. Но на самом деле… что будет, даже в рамках вашего решения, когда каннибал подъезжает к другому берегу с другим каннибалом, а там стоит один миссионер? Двое людоедов против одного миссионера? Вот и вся проблематика задачи и ее основная сложность. То есть нужно предусмотреть вариант, когда даже при подъезде к берегу с учетом тех, кто в лодке, выполнялось ключевое условие, когда количество каннибалов не должно быть больше количества миссионеров. Для тех, кто не читал саму задачу (это из серии материалов "Популярно об ИИ"), напомню ее. На одном берегу находятся три миссионера и три каннибала. Есть лодка, которая может вмещать одного или двух человек, и нужно переправиться на другой берег при условии того, что количество миссионеров ни в каком из состояний не должно превышать количество каннибалов. Кто слышит эту задачу впервые, рекомендую подумать, прежде чем читать дальше верный ответ.

Ох, чтобы уже не возвращаться к этой задаче, напишу правильное решение. Сначала каннибал перевозит на другой берег двух своих собратьев, возвращается на первый берег, остается там, а в лодку садятся два миссионера, при этом на другом берегу при подъезде к нему получается 2+2, после чего один миссионер остается, а второй забирает обратно на первый берег каннибала, подъезжая к первому берегу, где мы вновь имеем 2+2, потом миссионер забирает миссионера, после чего они оба оказываются на другом берегу, выходят, а в лодку садится каннибал и перевозит своих оставшихся собратьев. Конечно, проще это показать деревом. Так почему эта задача была введена в проблематику ИИ и так широко обсуждалась? Ответ очевиден.

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

Кристофер, christopher@tut.by

© Компьютерная газета

полезные ссылки
Оффшорные банковские счета