Судьба программиста
На днях в США нигерийского программиста, прибывшего в страну по делам, попросили доказать его профессиональные умения прямо в аэропорту Нью-Йорка. Сообщается, что сотрудники пограничной службы опросили нигерийца по прибытии в аэропорт, послед чего отвели в маленькую комнату, где его ожидал часовой допрос с пристрастием. В частности, ему пришлось описать функцию для проверки сбалансированности двоичного дерева поиска и развернуто рассказать, что такое абстрактный класс и зачем он нужен.
В результате пограничник назвал его ответы неверными, поскольку те не соответствовали описанию в Википедии. «Слушай, я отпускаю тебя, но для меня ты по-прежнему не выглядишь убедительно», — заявил он нигерийскому программисту.
Демпресса истерит по этому поводу, а между тем пограничник прав — «нигерийский программист» это уже интернет-мем какой-то, обозначающий жулика, ничего не понимающего в IT технологиях, но косящего под программиста. Такого жулья въехало в США под видом «высококвалифицированных специалистов» целое море.
Кстати, «абстрактный класс» — это одно из основополагающих понятий в объектном программировании, и трудно себе представить настоящего программиста с приличной квалификаций, не знающего, что это такое и зачем оно нужно. Определение на самом деле очень простое: абстрактный класс — это базовый класс, который не предполагает создания экземпляров. Из этого следует всё — если ты вообще понимаешь используемую терминологию (что как раз и позволяет проверить — программист ты или нет).
Суть в том, что для абстрактного класса нельзя выполнить конструктор («создать экземпляр» или «создать объект»), но можно создать производный класс, наследующий от абстрактного класса его свойства. И уже от этого класса создавать экземпляры и их использовать. То есть абстрактный класс — это некое описание полезных свойств объекта, но чтобы создать объект с такими свойствами, вам надо сначала создать СОБСТВЕННЫЙ класс, наследующий от абстрактного, и уже от него конструктор сможет создать объект с описанными свойствами и методами.
Абстрактные методы (методы, описанные для абстрактного класса) часто являются и виртуальными, в связи с чем понятия «абстрактный» и «виртуальный» иногда путают. Хороший тест на ОО программиста — попросить объяснить разницу между абстрактным методом и виртуальным. Если человек начал плавать — это клоун, обезьянка, нажимающая на кнопки без понимания, что она вообще делает.
Задачка «Проверить сбалансированность бинарного дерева поиска» — это вообще типичная задача на собеседованиях для программистов. Но можно даже не заставлять человека писать код или рисовать алгоритм — достаточно просто попросить объяснить, что такое «сбалансированность» бинарного дерева поиска и для чего она важна.
Внезапно для клоунов, косящих под программистов, «сбалансированность» это всего лишь максимальная разница между глубиной левого и правого поддерева среди всех вершин. Чтобы это знать — надо знать основы алгоритмизации, понятие бинарного поиска и т.д. Ну а если человек даже знает, что такое Адельсон-Вельский-Ландис — то вообще ОК, он явно что-то читал по специальности. Ну и да, то, что рандомизированные бинарные деревья поиска обеспечивают сбалансированность только в вероятностном смысле — знают нынче не только лишь все. Хе-хе.
Вот спросят вас такое в аэропорту — и всё, приплыл стартапер.
не поеду в омеригу, ыыыыыыыыыы, там так сложно…а, допустим, я грузчик. меня что спрашивать будут?
А тебя просто не пустят. Скрипач не нужен ™
В США по рабочей визе в основном пускают «высококвалифицированный персонал» — IT специалистов, инженеров, ученых. Раньше пускали относительно легко, достаточно было бумажки от работодателя и оплаты работодателем некоторой пошлины. Так в США въехала куча шантрапы, все эти «нигерийские программисты» — это оттуда.
А теперь Трамп закручивает гайки. Поцам надо будет подтверждать квалификацию прямо в иммигрейшене.
В очках и лыбится, значит програмизд.
Аааааа! Что это за хрень?!
(Ххххххх)
Что именно вам непонятно?
«Объект» или «экземпляр» в терминах объектного программирования — это структура данных, такой как бы набор переменных, описывающих состояние объекта, и приписанные к этой структуре данных методы, которые позволяют изменять значения переменных (то есть менять состояние объекта).
Абстрактный класс — Человек. Он описывает некую обобщенную модель человека и его свойства. Но чтобы с ним что-то делать — надо класс конкретизировать. Скажем, сделать производный класс Человек_Разумный.
И вот уже от класса Человек_Разумный можно конструктором создать объект Ванёк26, с которым производить некоторые манипуляции посредством методов. Как-то так: Кормить(Ванёк26, каша); Учить(Ванёк26, букварь, 3 часа);
Объяснение практически уровня Перельмана. Неплохо бы в таком смысле целую книгу прочитать, «Занимательное программирование».
В методе Учить забыли «розги» и «училка». Кроме того, return будет «только портить».
Да. И объект не «3 часа», а «время». которому присвоить значение в тактах. Ыыыыыыыыыы.
Тут подразумевается, что «час» — это тоже объект, производный от таймера.
Метод «Учить» производит воздействие на все три объекта — «Ванёк26», «букварь», и три объекта «час». Ванёк26 становится умнее, но устаёт, букварь становится обтрёпаннее и в нем появляются ванины каракули, а объекты «час», вынутые из контейнера «Сутки» в количестве трех штук, уничтожаются деструкторами. Когда контейнер «Сутки» становится пустым, из контейнера «Будущее» достается следующий полный, а этот либо уничтожается, либо перекладывается в контейнер «История».
Как-то так. Впрочем, можно предложить и другую реализацию этой метафоры.
А в синтаксисе а-ля Си++ можно писать вообще красиво, типа такого:
Букварь(3*час)>>Ванёк26;
Исключение_не_понял: Ремень>>Порка>>Ванёк26;
Ну и так далее.
Это смотря что написать в методе. А зачем объекты час доставать да еще из контейнера, если можно просто растягивать объект «Время»? Или объект Ванек26 должен участвовать еще в каких-то параллельных методах, например Флирт(Машка, уровень_флирта)?
Если у нас нет машины времени, то мы должны как-то отобразить однонаправленность движения времени, а также то, что время — это ресурс, который расходуется при применении некоторых методов.
Многопоточность еще усложняет концепцию.
Реализация времени через квантованные объекты — это решение «в лоб», но довольно затратное и не без проблем.
Просто вы забиваете одинаковыми объектами контейнер, чем занимаете память. А при применении объекта «Время» выполняется метод «Учеба» пока внутренний объект метода (допустим i при инкрименироВАНИи не достигнет значения «Время» (или для надежности — не станет больше)). Если же каждый раз генерировать объект «Час» то получается алгоритм несильно отличается от применения объекта «Время». Тут, действительно вопрос многопоточности. С микроконтроллерами вопрос решается прерываниями. У хорошего железячника в функции while(1){} максимум одна функция.
Тяжкое наследие процедурного программирования вижу я в тебе, джедай.
В «железе» пока так.
Инженегр-программизд.. Звучит.
Оффтоп.
На интернет-страницах погибших детей идет гибридная война
http://izvestia.ru/news/667495
А вот не понимаю слова- гибридная, если война, так война..
Это просто разновидность войны. Иначе — ядерный удар.
отрупидь интернет , прямо на хранитсэ, топором..
#ввестивойска
вот пендосы ш поставляют оружие в 404, 404 воюет с нашими бурятскими войсками, все это знают, не так ли? так где наш ответ Лаврова? надо прямо так и спросить, вы подвердите, что петрошенко воюет с нашими войсками? ну и далее по тексту..
И вооще, Лаврову одеть мундир с погонами, и выйти так на встручу с пендосами, пусть у них отвалятся челюсти, а чё? гибридная война, он на переднем окопе.
Если так сделают… ыыы..хъххъ…мамамия…ууугггг.. это будет сколько мегатонн?
«Вдруг CNN узнает?»: Захарова «предостерегла» посла США от визитов в МИД
https://ria.ru/politics/20170303/1489201484.html
Вань, дай просто ссылку- риа.ру… И читайте дальше))