Платные курсы разработки iOS от IDAP Group

Развитие топика dou.ua/forums/topic/10202

Набираю людей на платное обучение iOS с нуля.

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

Сайтег:
www.idapgroup.com/college.html

Обучение происходит следующим образом:
3 часа в день 4 дня в неделю 6 месяцев у нас в офисе на нашем железе (мак/хакинтош дома для домашней работы обязателен).

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

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

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

Результат обучения:
— знания;
— выпускное задание, которое выложим на GitHub;
— оценки вашего обучения на нашем сайте и рекоммендации.

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

География: ул. Марины Расковой, 2а, Бизнес центр «Левобережный», Офис 602

Стажировка — работа над коммерческими проектами под надсмотром наставника с разбором полетов и рекомендациями. Происходит общение реже, но дольше.

Учебная программа:
Основы программирования и алгоритмизации на примере С

1. Базисы языка:
— функции;
— математические операции;
— строки;
— структуры;
— условия;
— switch;
— циклы;
— исходники и заголовочные файлы;
— макросы;
— область видимости;
— переменные;
2. Работа с памятью:
— стек и куча;
— указатели;
— массивы;
— арифметика указателей;
— доступ к данным через указатели;
— размещение данных в памяти и выравнивание;
— указатели на функции;
3. Базовые алгоритмы и структуры данных:
— сортировка;
— базовые структуры данных и операции над ними;
— callbacks.

Objective-C, проектирование моделей на основании базовых структур данных и базовых паттернов

1. Философия, синтаксис и лексика Objective-C:
— классы, протоколы, категории, расширения, property;
— литералы;
— блоки и __block переменные;
— objc_msgSend — трамплин и скрытый вызов;
— многопоточность;
— атомарность и синхронизация;
— динамика и тип id;
— особенности наследования и сокрытия данных и методов;
— for/in loop;
— кластерные классы;
— сообщения;
— message forwarding;
2. Ручное управление памятью основанное на подсчете ссылок:
— спецификаторы;
— retain loops;
— autorelease pool;
3. Наследование и полиморфизм;
4. Базовые типы Objective-C:
— нативные;
— примитивные;
5. Стилистическая и лексическая полнота кода:
— гайдлайны;
— оформление кода;
— именование;
6. Базовые подходы к проектированию:
— делегирование и наблюдаемость;
— состояние;
— проакторы (диспетчеризация);
— неизменяемость;
— многопоточность на основании синхронизации, dispatch_queue и NSThread;
— точки входа и точки перегрузки;
— переиспользуемость и универсализация поведения;
— декомпозиция, длина метода, отнесение поведения к сущностям посредством наследования и категорий.

Cocoa Touch и проектирование графических приложений с использованием базовых паттернов

1. Автоматическое управление памятью:
— спецификаторы;
— слабые, сильные, небезопасные переменные;
— блоки в арк;
— асинхронность в блоках;
2. Работа видов Cocoa Touch:
— нативные типы;
— подсистемы рисования
— CALayer;
— Core Graphics и рисование
— ручное рисование и принцип запекания в текстуру;
— аффинные преобразования;
— иерархия координат видов и подвидов;
— responder chain;
— анимации и твины;
— gesture recognizers, наследование и обработки касаний из видов;
— неблокирующие операции;
3. Построение графических интерфейсов в Interface Builder:
— storyboard;
— nib;
— auto size;
— autolayout;
— size classes;
4. Проектирования в паттерне MVC:
— функциональные обязанности контроллеров, видов и моделей;
— декомпозиция поведений;
— асинхронность и наблюдаемость состояния моделей;
— сохранение и загрузка состояния с архивацией;
— модели и массивы моделей;
— абстрактная модель и абстрактный наблюдаемый объект;
— использование паттернов с корректировкой под задачи;
5. Коллекции видов;
— таблицы;
— коллекции;
— принцип переиспользования;
— проектирование переиспользования с декомпозицией базовых задач на сущности через категории и конвенции;
6. Кеширование и работа с сетью:
— наблюдаемая модель и загрузка из сети;
— вымещающее кеширование;
— кеширование с очищением закешированного объекта при отсутствии владельцев;
7. DCI:
— декомпозиция моделей на роли, данные и контексты;
— взаимодействие контекстов с моделями;
— выполнение и отмена контекста;
— локальность кода и поведения;
— роль, как отдельная и интегрированная сущность;
— композиция объектов;
— миксины
8. Базы данных:
— Core Data — структура, базовые сущности;
— наследование в managed object model и в иерархии классов;
— Active Record;
— декомпозиция в стиле Active Record;
9. Управление версиями и зависимостями:
— git;
— git-flow;
— cocoa pods;
10. Работа с опенс-сорс и нативными библиотеками:
— выбор библиотек;
— чтение документации и кода.‎

З.Ы. Предупреждая вопросы, мы не отказываемся от бесплатного обучения на условиях рабства и работы за еду (набор на которые, правда, будет нескоро), но предлагаем еще один, для тех, кого наши обычные условия не устраивают.

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Добрый вечер! подскажите как записаться к Вам на курс?
Готов ходить 7 дней в неделю в любое время и оплачивать

До конца набора группы № 1 18:00-21:00 осталось 2 дня. Начало обучения 9 Февраля.

1. планируете ли вы курсы на вторую половину года октябрь-декабрь это курсы на постоянной основе?
2. А как же SWING, планируете что то в этом направлении?

1. планируете ли вы курсы на вторую половину года октябрь-декабрь это курсы на постоянной основе?

Вы бы не могли перефразировать с использованием большего количества пунктуации? Я не понимаю вопрос и взаимосвязь курсов на постоянной основе и октября-декабря.

2. А как же SWING, планируете что то в этом направлении?

Swing — это не к нам, не наш профиль. Если вы о Swift, то в этом треде уже обсудили:
dou.ua/...=comment#615623

С праздниками всех! Интересует, или после курсов (отличного окончания) приемлемо работать у Вас фрилансером (что бы первую работу, которая по будням до 17.00, не кидать). Есть большое рвение и заинтересованность .

С праздниками всех!

Спасибо. Вас также.

Интересует, или после курсов (отличного окончания) приемлемо работать у Вас фрилансером (что бы первую работу, которая по будням до 17.00, не кидать).

Ксожалению, на данный момент мы заинтересованы только в работниках на полный рабочий день.

Да не за что, кагбэ.

Я б рекомендував трейнінг-центр СМК (Software MacKiev), там вас будуть вчити + платити заробітню платню. Хоча не в курсі актуального стану в компанії, знаю лише, що звідти пішло багато провідних спеціалістів. До того ж організовується він лише кілька разів на рік. Але, звичайно, щоб туди потрапити треба мати базові знання по програмуванню та доволі непогано володіти С чи С++.

Взагалі, думаю, що для розумних студентів технічного вузу не варто на якісь курси йти, не проблема знайти роботу, на якій і навчать, і гроші будуть платити.

У нас есть тоже бесплатные курсы, кагбэ. Но они не с нуля и на них достаточно жесткий отбор. Тут уже, каждому свое. Поскольку у нас неоднократно интересовались о возможности платного обучения, мы решили попробовать и его.

не проблема знайти роботу, на якій і навчать, і гроші будуть платити.

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

многие компании вообще нос воротят от джунов и трейни, но это вызванно тем, что

на якісь курси

действительно идти не стоит, ибо выпускники оных в большинстве своем абсолютное уныние

А вот собразительный джун, которому привили правильный подход и образ мышления, не смотря на отсутствие опыта, может быть очень хорошей инвестицией. И это я Вам говорю не как директор “каких то курсов”, а как директор “какой то” IT компании.

Вітаю зі святами.
Відправив заявку, хочу переконатись, що Ви отримати підтвердження.
Name: Yurii
Tel. *69

Спасибо. Вас также. Заявку получили. Отдел продаж вам сразу же отпишет, как проснется.

Меня интересует стоимость данных курсов?

вверху ссылка на сайт, там есть цены

Предугадывая возможные язвительные замечания, я решил раскрыть интригу сразу, до 290$/месяц.

Зависит от способа оплаты, помесячно или за весь курс сразу.

Интересует, в какое время и по каким дням будут проходить занятия, получится ли совмещать их с работой?

3 группы, которые будут стартовать с интервалом 2 месяца

1. 10:00 — 13:00 ориентировочный старт конец Июня
2. 14:00 — 17:00 ориентировочный старт конец Марта
3. 18:00 — 21:00 ориентировочный старт конец Января

Последняя по времени занятий, но первая по времени старта рассчитана как раз для таких случаев

Да, все три группы понедельник-четверг

Не планируется ли набор групп с менее интенсивным графиком, например вместо 4 — х занятий проводить 2? Так как для тех, кто работает, 4 занятия в неделю по 3 часа еще и по будням после работы — непосильная задача.

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

Мы уже 2,5 года проводим бесплатные курсы внутри компании, с обязательным трудоустройством у нас. И на этих курсах люди учатся 8 часов в день 5 дней в неделю плюс задания на дом. В данный момент мы максимально адаптировали курсы для более широкой аудитории и сделали их платными. Но основная задача осталась прежней — научить !

Боюсь 2 раза в неделю по 2 часа превратится в банальное «срубить бабла и до свидания....» либо курсы придется растягивать на год, а то и больше.

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

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

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

В принциак, где-то так и есть. Из моего опыта, наилучшие результаты, когда челвоек пашет не отрываясь от станка постоянно.

Предлагаемая цена за 16 занятий в месяц по 3 часа каждое (48 часов в месяц) — это намного более приятная цена, чем предлагают аналогичные коммерческие курсы. Правда, аналогичные курсы, в основном, после обучения сами в выученных кадрах не заинтересованы, в отличие от нас.

Либо постарайтесь пройти к нам на набор на бесплатное обучение, когда оное будет анонсировано на ДОУ.

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

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

Ну во-первых вы в очередной раз подтверждаете свою неадекватность. Во-вторых я к вашим курсам совершенно не причем.

Ну во-первых вы в очередной раз подтверждаете свою неадекватность.

Всплакните на этот счет и в очередной раз зайдитесь в припадке неистового лютого невпинного фапа на мою персоналию.

Во-вторых я к вашим курсам совершенно не причем.

Безусловно «не причем», ибо для прохождения наших курсов нужны когнитивные способности.

Вы такой первым какашку кинули, а потом:"Тримм, Вы такой неадекватный!" Олег, да Вы та еще кокетка!

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

В таких случаях техническая грамотность перевешивает любые шероховатости в общении.

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

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

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

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

насчет технической школы, спорный вопрос, у меня много знакомых которые «переехали» и успешно работают в том же Киеве.

Понимаете, выборка нерепрезентативна. Общая подготовка во многих городах хуже. Это не значит, что все спецы плохие априори. Это говорит, что срез знаний, умений, уровня мотивации будет слабее.

Если смотреть статистику ДОУ, то посетителей из, например, Тернополя в 107 раз меньше, чем из Киева :)

Если смотреть статистику ДОУ, то посетителей из, например, Тернополя в 107 раз меньше, чем из Киева :)

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

Ну вот допустим в Днепропетровске ит — компаний валом, как и желающих познавать непознанное... На сколько я понимаю ваша ЦА не только в новичках, но и в тех кто хочет повысить своё мастерство и получить новые знания и рекомендации, так что задумайтесь о представительстве и несколько Ваших клиентов уже есть и ожидают в г. Днепропетровск :)

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

Yalantis? Они же занимаются похожим именно в Днепре, если я ничего не путаю.

Не совсем. У них курсы бесплатные и с порогом входа, аналогично нашим бесплатным. Но, ищущий да обрящет и порог входа легко подтянет.

Супер программа!
Респект.

Гы. Пасиб, Тим.

Не за что — когда хорошо, то оно хорошо.

ЗЫ. Прикрутите ФБ страничку и ссылку с-на сайт. Выхлоп небольшой, но он есть и относительно нашару.

Пасиб за подсказку. Сейчас этим занимаемся.

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

такий підхід мені подобається

Ну вот у меня величайшее желание попасть к Вам, и проблема как раз не в деньгах, а в месте проведения. Нахожусь в городе Днепропетровск. Так как работаю 7/7 дней нет ни малейшей возможности мотаться в Киев, хотя о Вашей компании наслышан исключительно позитивными отзывами. Так, что буду ожидать Вашего представительства в г. Днепропетровск :)

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

Кстати я только начал изучение азов objc и всех сопутствующих материалов, по этому готов к групповому изучению. Есть офис с wi-fi + неограниченное кол-во кофе и сопутствующих плюшек — буду рад единомышленникам!

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

Спасибо за рекомендации — очень признателен!
Сопутствующие материалы — имею ввиду непонятные для меня слова или понятия — гуглю и пытаюсь разобраться. Мои познания языков программирования: Лет эдак 15 назад бэйсик, турбопаскаль, лет восемь назад работал дизайнером, пришлось выучить html + css, и до уровня поиска багов и устранения был изучен php (исключительно за надобностью в прошлом). Моя работа не связана с ИТ почти никак, хотя в штате имеется толково — гениальный пхпшник для поддержания собственных ресурсов. Прочёл «Become an Xcoder» — появилась целая горища вопросов — на которые ищу ответы (вобщем то нахожу). Так вот если Вас не затруднит, дайте ещё рекомендацию какие может уроки или примеры стоит разобрать — изучить, исключительно на Ваш взгляд! Буду признателен...

Скажем так, я бы не брал уроки вообще. Дял самсообучения я бы выбрал следующую тактику:
0. Изучите, что такое git и git-flow, пользуйтесь им в дальнейшем постоянно;
1. Придумайте себе какое-нить приложение с базовым функционалом и напишите его, используя доку (в гугле ищите не примеры реализации, а просто названия классов, которые вам нужны, а потом читайте доку и по не пишите);
2. Из доки ищите все незнакомые слова, ищите их значение, выписывайте их и зубрите, чтобы поднять уровень лексики и терминологии;
3. Обращайте пристальное внимание на то, как вы оформляете код, дял чего прочитайте какие-нить гайды, например, гугловы и самого яблока по оформлению кода ( google-styleguide.googlecode.com/...k/objcguide.xml , developer.apple.com/...ines/index.html );
4. Из доки доки обращайте внимание на то, как именует все яблоко и пытайтесь у себя реплицировать;
5. Как приложение написано, прогоните его через анализатор и профайлер и исправьте все утечки и недочеты;
6. Добавьте несколько новых фич, котоыре бы расширяли, а где-то и меняли поведение, причем, как минимум, одна фича должна менять поведение приложения кардинально;
7. После того, как увидите, насколько больно и сложно менять ваш код, обдумайте то, как бы переписать весь код так, чтобы было проще добавлять фичи;
8. Реализуйте обдуманное;
9. Перейдите в пункт 5 до момента, пока не сделаете хотя бы 3 итерации разработки;
10. Начинайте читать mikeash.com/pyblog дял углубления понимания, но не копируйте код (ну не очень красивый);
11. Параллельно начинайте учить С по этой штуке c.learncodethehardway.org/book
12. Для оформления С смотрите, как оно использовано и написано в Core Foundation ( www.opensource.apple.com/source/CF ).

На первое время вам хватит. После этого, надо найти код, который написан хорошо и его прочитать, скорректировать свой код (это сложно, но реально, т.к. большинство опен-сорса — уныние).

Огромное спасибо!!!
Бросил всё — пошёл вникать! :)

Та нзш. Плодитесь и размножайтесь.

отписал тебе в skype

Чому не Swift?

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

Ну а то, что в нем нет сообщений и самых базовых вещей (KVO, KVC), которые делают ObjC столь годным языком, как бы намекает нам на мертворожденность этого поделия. Ведь по-сути, то, что яблоко крутит свифт, как ObjC без С, не делает его таковым, он скорее похож на ObjC без Obj, но с С++. Я искренне и от всей души надеюсь, что яблоко либо внесет в свифт базовый класс, поддерживающий сообщения и другие мощные инструменты из нормального языка, либо убьет это поделие, как карбон в свое время.

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

Ребята из NSHipster, мнение которых я нахожу куда более авторитетных чем ваше (простите), предрекают близкую смерть не только ObjC, но и Cocoa в целом. Советую почитать.

лінку лінь було вставити?

В гугле забанили? Даж я нашел: nshipster.com/...death-of-cocoa

Ребята из NSHipster

Это те самые, которые рассказывают о вещах, которые и так лежат в доке, но уже дял тех, кто и доку толком осилить не может? Окда, вы бы еще авторитетное мнение Рея Вендерлиха привели.

Советую почитать.

Наф мне читать бредни туториальщиков, у которых основная аудитория — это люди, которым доку читать лень?

мнение которых я нахожу куда более авторитетных чем ваше (простите)

А вам и не надо искать мое мнение. Надо просто читать вам не шлак, а людей достойных, типа Эша, Вейхера, Крофорда, Бакли и иже с ними, которые пишут о чем-то серьезном.

редрекают близкую смерть не только ObjC, но и Cocoa в целом.

Давайте взглянем на кейсы скорости отмирания технологий у яблока при поялении конкурирующих:
— ARC должен заменить MRC, MRC живет уже три c гаком года;
— garbage collection прожил одновременно с ARC 2.5 года;
— carbon вместе с cocoa жил 6 лет полной жизнью (32-битная ОС), а потом еще 5 в режиме эмуляции (не был портирован).

А с точки зрения отмирания: пока свифт не будет побеждать уверенно по скорости обжектив-с и не будет иметь своего нативного фреймворка, на нем же и написанного, никто от него не откажецца. Т.е., лет 5 ему еще существовать, как минимум. Ну а за это время, может, и из свифта, что — нить годное сделают, вместо фекального крестоподобного поделия, которое не дает гибкости динамического языка и не являецца ООП — языком, как и все другие крестоподобные поделия без динамики (думаю, в этот момент у шарпеев и явистов припекло).

З.Ы. Лично я бы cocoa тоже убил, а вместо него портировал бы cocoa touch, как более удобный и легкий в обращении на мак.

крестоподобные поделия без динамики (думаю, в этот момент у шарпеев и явистов припекло)
У меня не припекло, видимо, я не понял что вы имеете в виду. Если под динамикой подразумевается динамическая типизация, то в .NET есть DLR.
Если под динамикой подразумевается динамическая типизация, то в .NET есть DLR.

А может и я чего не знаю и может шарп таки дошел до того, что в ООП языках было с рождения. Посему хотелось бы уточнить несколько моментов использования DLR:
— возможно ли в рантайме перехватить вызов метода к объекту, у которого такого метода нет?
— возможно ли в рантайме сгенерировать новый класс и задать объекту, что он этого класса?
— возможно ли в рантайме подменить реализацию метода объекта на другую реализацию?
— возможно ли в рантайме добавить метод уже существующему классу?
— возможно ли сделать такой конструктор класса, чтобы он создавал не класс, к которому мы обращаемся, а какой-нить другой класс с другим интерфейсом?

Оу, я так глубоко не копал. Даже навскидку не придумаю зачем это может понадобиться.

— возможно ли в рантайме перехватить вызов метода к объекту, у которого такого метода нет?
Сам не пробовал, но эта библиотека как раз и перехватывает вызовы для генерации запросов к БД — simplefx.org/...onventions.html.

Про конструктор — точно нет. Про остальное — боюсь соврать.

А точно нужно подменять реализации методов у объектов в памяти? У меня наверное шаблон порвался :)

Даже навскидку не придумаю зачем это может понадобиться.

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

К сожалению, я далек от Obj-C. Мельком глянул что такое KVO — в .NET есть INotifyPropertyChanged интерфейс, который призван решать эту же задачу, на сколько я понял.

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

К сожалению, я далек от Obj-C. Мельком глянул что такое KVO — в .NET есть INotifyPropertyChanged интерфейс, который призван решать эту же задачу, на сколько я понял.

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

Да, все красиво можно сделать, как тут: github.com/...PropertyChanged
Но внесение в иерархию новой сущности — это ад, т.к. вы апроиори без наследования не можете сделать сущность наблюдаемой, если у вас нет исходников этой сущности (скажем, стандартная либо скомпиленая).

Видимо там немного другая парадигма.

Именно. В смолтолкоподобных языках — парадигма ООП от создателя термина ООП (сообщения, очень позднее связывание, локальное сохранение), в крестподобных, к которым относицца и Swift, упомянутый ранее, парадигма от Cтрауструпа, которая весьма убыточна (энкапсуляция [аналог локального сохранения, ], наследование, полиморфизм).

Может быть мне просто нужно увидеть конкретный пример чтобы понять почему эти «гадости» лучше чем обычный подход, который позволяет реальзовать тот же C#.

Приводил парочку примеров ниже, которые и вам приведу:

Добиться миксина в пару строк без того, чтобы в каждом методе эксплиситно вызывать миксин. Ну типа такого: [self extendWithObject:someObject], после чего вы можете вызывать напрямую все методы someObject используя для этого self. К примеру, у нас у someObject есть метод burnInHell, после экстенда вы можете просто сделать так: [self burnInHel
Расширение текущего класса поведением без наследования. Мы ведь в ООП думаем и плодить лишние сущности для того, чтобы расширить поеведние — не комильфо, так? Посему не создаем StringExtensions для нового поведения строки, а встраиваем его просто в String, что приводит к тому, что поведение относицца именно к той сущности, которой поведение принадлежит, а не к десяткам разных надстроек.
типа KVO
другий з запитів в гуглі показує це:
«Ask anyone who’s been around the NSBlock a few times: Key-Value Observing has the _worst_ API in all of Cocoa»
а без жартів — це все по факту є, навіть з фактично статичною жорсткою типізацією, дивно, чого б це?
а без жартів — це все по факту є, навіть з фактично статичною жорсткою типізацією, дивно, чого б це?

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

Расскажите, мне, пожалуйста, как в шарпе можно расширить текущий класс поведением без наследования, может я чего не знаю? Мы ведь в ООП думаем и плодить лишние сущности для того, чтобы расширить поеведние — не комильфо, так? Посему не создаем StringExtensions длz нового поведения строки, а встраиваем его просто в String.

А как насчет того, чтобы создать фабричный метод у уже существующего класса, который бы позволял более удобно получить доступ?

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

Также, так уж и быть, расскажите заодно, как добиться миксина в пару строк без того, чтобы в каждом методе эксплиситно вызывать миксин? Ну типа такого: [self extendWithObject:someObject], после чего вы можете вызывать напрямую все методы someObject используя для этого self. К примеру, у нас у someObject есть метод burnInHell, после экстенда вы можете просто сделать так: [self burnInHell].

а без жартів — це все по факту є
йшлось про кінцеву мету, а не те як її досягнуто:
KVO того же, годного ActiveRecord, подмены реализаций, человеческой композиции и миксинов, кеширования,
...
как в шарпе можно расширить текущий класс поведением без наследования,
csharp.net-tutorials.com/...ension-methods
создать фабричный метод у уже существующего класса, который бы позволял более удобно получить доступ?
доступ до чого?
щось підказує що лінка та ж сама :)
Про KVO, опять же, расскажите. Как в шарпе можно начать наблюдать за проперти без того, чтобы вживлять в иерархию наследования сущность?
вам треба наблюдати, чи вимахуватись «без того, чтобы вживлять в иерархию наследования сущность?» ?
класична реалізація є для пропертів в WPF
расскажите заодно, как добиться миксина в пару строк
ніззя, проти концепції мови з жорсткою типізацією ;)
найближче подібне — генеріки, що в момент компіляції знову ж стають жорстко-типізованими
йшлось про кінцеву мету, а не те як її досягнуто:

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

csharp.net-tutorials.com/...ension-methods

Согласен, похоже.

доступ до чого?
щось підказує що лінка та ж сама :)

Сорри, не дописал. До методов и переменных класса (класс — это тоже объект (мы же в ООП языке пишем, где все — объект), ведь так?) для удобства полиморфизма.

Классический случай:
+ (Type *)new {
return [self new];
}

+ обозначает, что это — метод класса (статический в терминологии шарпа).
self — объект класса (в зависимости от класса, т.е. у наследника self — это не класс родителя, а класс наследника).
new — аллокация

В той линке не увидел подобного. Возможно, можно через рефлексию, но что-то я крепко не уверен. Генерики не предлагать, т.к. они предполагают, что у нас в наследнике прийдецца что-то дополнителньое ваять для того, чтобы этот метод завелся (или я опять не прав?).

вам треба наблюдати, чи вимахуватись “без того, чтобы вживлять в иерархию наследования сущность?” ?

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

Ну это кроме того, что можно не вымахиваться и все написать на С или АСМе, чего уж там? Мы ведь не на ОО-языке высокого уровня пишем, ведь так?

ніззя, проти концепції мови з жорсткою типізацією ;)
найближче подібне — генеріки, що в момент компіляції знову ж стають жорстко-типізованими

Генерик не подобен, т.к. по сути, созадется новый тип, так же? А это значит, что без создания кода генерика на этапе компиляции мы не сможем расширить поведение впоследствии дял того, что к генерику не обращалось. Самый простой пример, у нас есть удаленный объект и мы заранее не знаем, какой именно, но из какого-то определенного набора интерфейсов. Реализация шарпа — нагородить генерики под каждый из интерфейсов, через фабрику, что есть многабукоф из ничего.

Надеюсь, после сего трактата вам понятно, почему многие сильные проггеры (я не о себе, есичо) считают текущую реализацию Swift шагом назад в древнее не-ОО прошлое, частью которого есть шарп и ява?

В той линке не увидел подобного.
ну та, лінка то відповідь на одне питання
Генерики не предлагать,
ними ніззя, вони працюють з обєктами, а не типами, явно створювати ніззя.
неявно — фабрики по відомому інтерфейсу, або рефлекшин.
рефлекшин теж в загальному випадку не піде, лише через те що в процесі наслідування будь-який з конструкторів може стати приватним, чи зявитись новий, і створювати всі обєкти різних типів дефолтним конструктором ніззя.
Мне надо наблюдать, а еще иметь отдельную иерархию наследования, которая бы реализовывала уже нужный базовый функционал.
наблюдати можна, без зайвого коду — лише в WPF контролах/вікнах, хоча це теж відкрите питання, про відсутність зайвого коду там.
наскільки ж часто це справді треба для всіх обєктів без привязки до типу і інтерфейсів — відкрите питання ;)
Самый простой пример, у нас есть удаленный объект и мы заранее не знаем, какой именно,
if(x is Y)
{
Y xy = (Y)x;
}
else...
наскільки ж часто це справді треба для всіх обєктів без привязки до типу і інтерфейсів — відкрите питання ;)

Это надо в любом фронтенде, который должен быть responsive и неблокируемым. И тут либо городить лишний код, либо все реализуется динамическими механизмами один раз и живет годами.

if(x is Y)
{
Y xy = (Y)x;
}
else...

Ну эт то, что я и написал:

Реализация шарпа — нагородить генерики под каждый из интерфейсов, через фабрику, что есть многабукоф из ничего.
Это надо в любом фронтенде,
в фронтенді це вже базовими типами і реалізоване ;)
Ну эт то, что я и написал:
Реализация шарпа — нагородить генерики
нащо генеріки, якщо є відомі обєкти/інтерфейси, з колекції можливих?
як ви їх потім використовувати плануєте, якщо невідомо за що дьоргати?
в фронтенді це вже базовими типами і реалізоване ;)

У вас во фронтендах есть базовые модели, позволяющие наблюдение заранее неизвестных проперти в субклассах?

нащо генеріки, якщо є відомі обєкти/інтерфейси, з колекції можливих?

Я предположил варианты. Генерики или фабрики.

як ви їх потім використовувати плануєте, якщо невідомо за що дьоргати?

Например, Convention over Code.

Например, Convention over Code
є таке в шарпі, але лише в WCF. там ця коніенція явно описана — атрибутами ;)
базовые модели, позволяющие наблюдение заранее неизвестных проперти в субклассах?
о.0 нах?
сенсу спостерігати за тим що ти не здатний використати? воно ж — жорстка типізація ;)
о.0 нах?
сенсу спостерігати за тим що ти не здатний використати? воно ж — жорстка типізація ;)

Это был ответ на ваше утверждение:

в фронтенді це вже базовими типами і реалізоване ;)

А смысл в следующем — не писать эксплиситные нотификации и иметь нотификации out of the box. Я просто предположил, что у вас это реализовано в базовых классах, как вы и сказали.

Самый простой пример, у нас есть удаленный объект и мы заранее не знаем, какой именно, но из какого-то определенного набора интерфейсов.

Если я правильно понял, то в шарпе это можно реализовать так:
public interface ISomeInterface
{
void Method();
}

public class GenericClass<t> where T : ISomeInterface, new()
{
void Method()
{
T instance = new T();
instance.Method();
}
}

Я не совсем понимаю, как оно работает, если честно. Похоже на фабричный метод.

Что-то из этого возможно, при использовании IDynamicMetaObjectProvider (пример Андрея Литвинова показывает это). Мы можем создать объект, перехватывать все обращения к его членам. Можно отдавать фейковые метаданные о типе. Все это будет работать только если язык, на котором мы пишем, поддерживает DLR (в C# для этого нужно указать, что тип переменной — dynamic, в IronPython должно работать из коробки).

В остальных случаях — то, что было прописано у типа при компиляции, поменять нельзя.

— возможно ли в рантайме сгенерировать новый класс и задать объекту, что он этого класса?
Да, но через жо... рефлексию и углубление в дебри IL: www.codeproject.com/...Reflection-Emit

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

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

Если можно реализовать, то зачем тогда столько больных костылей, типа нотифицирующего интерфейса?

Все очень плохо когда есть желание учится но нет денег.
Просто я начал вот понимать что в месте где я учусь лишь теоретики которые не могут нормально обучить.

Эмм... Бесплатные курсы со стажировкой и кабальными контрактами лично мы не сворачиваем. Как проходили раз в полгода-год, так и будут проходить. Но на них еще попасть надо, т.к. много челвоек на место, да и собеседование с тестовым сложное.

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

Та это я так на жизнь жалуюсь.

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

Все очень плохо когда есть желание учится но нет денег.
особенно когда еще и в гугле забанили

та в Гугле вроде не забанили.
Читаю, учусь, программирую потихоньку но с хорошим учителем быстрее я думаю будет.

Учитель не нужен, нужен наставник. Проггерство — это в вашей голове, ему не научишь. можно только подталкивать в правильном направлении. Да и самому можно. Пилите, да обрящете.

Подписаться на комментарии