Мы разрабатывали приложения под защищенные смартфоны одного крупного южнокорейского производителя. И почему-то очень долго на рынке не было аналогичных Android устройств по схожей цене.
И это всё под бюджет шнурка для обуви в стране, где айтишка на 97% состоит из продажи железа!
Если кратко: очень много нужно стараться, чтобы в Windows Mobile получилось удобное в использовании и приятное зору приложение. Конечно, есть кастомные контролы и тулкиты, которые решают эти проблемы, но как-то слишком много телодвижений, как по мне.
То ли дело в iOS — вся разработка изначально под тач-скрин, с хорошими гайдлайнами по дизайну, и это по-умолчанию (хотя старание никто не отменял, конечно).
(под Андроид не разрабатывал да и не охота)
ДИСКЛЕЙМЕР: конечно, много в таких мнениях вкусовщины, но куда ж без нее :)
Есть книги, доступные под свободной лицензией.
Такими книгами являются, например, 'forall x', 'Proofs and Concepts', 'Programming Languages: Application and Interpretation'. Для личного пользования их можно распечатывать совершенно легально.
А вы не думали о том, что изучение того же D может привести к каким-то новым, полезным, идеям и инсайтам, к профессиональному и личностному росту? Плюсующие, видимо, тоже об этом не думали.
> Да я вроде как нигде и не утверждал, что моё личное мнение всецело претендует на объективность.
Я специально сделал на этом акцент, чтобы отсечь все разговоры о якобы простоте и логичности Си++.
>Я считаю, Ваш сарказм по поводу машины Тьюринга здесь неуместен.
Это не сарказм. Улыбнуло просто :)
>Под «безграничными возможностями» я подразумевал возможность работы в этом языке как на низком уровне, так и на высоком, поддержку нескольких парадигм программирования и т.д.
Вот так бы сразу и сказали.
>Взять ту же Java (которая также тьюринг-полная) — про неё можно сказать то же самое?
>в больших проектах C себя не оправдывает в силу процедурного подхода (в противовес объектно-ориентированному в C++).
Си не оправдывает себя вовсе не потому, что он императивный, а потому, что предоставляет слабенькие средства создания и комбинирования абстракций.
Это сильно сказывается на разработке и поддержке больших систем.
>На тот момент, когда я о нём узнал, у меня были уже достаточно неплохие познания в C++, а начинать заново изучение нюансов очередного языка мне показалось не слишком разумной идеей
D 1.0 очень простой, и документация у него толковая. Учится не в пример легче Си++.
>учитывая тот факт, что востребованность D-программистов на рынке труда также не слишком впечатляет
Это такой аргумент против получения новых знаний? Очень грустно.
>C++ абсолютно не запутанный, а напротив — весьма последовательный и логичный
Если бы у Си++ была формальная семантика, тогда и можно было бы говорить о *объективной* последовательности и логичности. А покуда ее нет — эти критерии субъективны.
>Другое дело, что в нём достаточно много важных «мелочей», но это плата за практически безграничные возможности, которые данный язык предоставляет программисту.
О каких «безграничные возможностях» вы говорите? Он что, вычисляет больше, чем машина Тьюринга? :)
А вы переходите на личности.
Я просто хочу вам показать другой взгляд на проблему. :)
>к тому времени я уже понял, что работа для меня важнее теории, даваемой в универе, в чём ещё не раз убедился доучиваясь. я уверен, что 80% студентов в универе действительно учатся по ошибке, но и процент плохих преподователей примерно такой же.
Вы все правильно сделали. И это подтверждает мои слова — стране нужны ПТУшники, причем много.
Да, в атрибутных грамматиках ничего сложного нет. Проблема в том, что у них очень мало применений, даже в компиляторостроении.
Интересная тема для исследования же.
>но ведь в университетах считают, что будущий программист обязан знать философию, историю, физику.
И это правильно. Личность надо развивать всесторонне.
>почему же преподаватели не должны знать что-то кроме узкой области
Может быть, это просто у студентов кругозор слишком узок, чтобы понять, что кроме прикладных технологий существует что-то еще?
не представлять что нужно студентам в будущем.
Преподаватели должны дать основы, научить подходить ко всему систематически, последовательно.
А студенты должны сами изучать выходящие каждый год т.н. «новые» стопицот технологий, используя полученные в вузе знания и навыки.
>студент же не может отказаться от курса, сказав, что это ненужные знания, предназначенные для исследования идей, а он мечтает быть практиком (таких большинство).
Студент, на самом деле, мечтает быть не практиком, а ПТУшником. В вузе его учат строить дома, а он хочет забивать молотком гвозди.
Правда в том, что высшее образование ему не нужно.
>за рубежом как-то справляются с ситуацией, а у нас
За рубежом справляются именно так, как я написал выше.
У нас же
нет спроса на рынке (а для многих вещей вообще нет своего рынка, вот допустим, сколько вы знаете контор, занимающихся компиляторами, в России?),
высшее образование идут получать все поголовно. Общество навязывает стереотип, что у каждого должно быть ВО. Это не так. Многим оно не нужно. В результате, страдает качество преподавания (на преподавателей слишком большая нагрузка, физически невозможно с каждому студенту на потоке все объяснить).
>теоретики и исследуют, исследуют, но ничего не открывают.
Вы можете доказать это утверждение? :)
>система прогнила и требует модификации, это требования реального мира, а не заказчиков.
Да. Я согласен с тем, что всех, кто хочет быть ПТУшником, надо отправлять в ПТУ.
>как они могут объяснить зачем, если сами не знают.
А может быть, студенты все-таки не готовы понять? Вот вы поняли пример про атрибутные грамматики? Только честно. :)
>препод может идти туда же, куда затем пойдут студенты, которые прослушают его курс — в смежные области, чтобы понять, что такое командная работа, что такое писать так, чтобы могли его поддерживать и кустомизировать другие, что такое изменяющиеся требования…
Ох. Сколько заблуждений в одном предложении.
По пунктам.
Есть разработки коммерческие (направлены на зарабатывание денег), и есть разработки исследовательские, академические (направлены на изучение проблем, теоретических или практических). Это разные, но пересекающиеся, вещи. Их нельзя смешивать, так как к ним предъявляются существенно разные требования.
Для коммерческих разработок нужен развитый, стабильный, стандартный инструментарий (IDE, toolchain, groupware и т.д). Над ними работают команды, очень важны такие качества кода, как понятность, поддерживаемость, документированность. Также используемый язык программирования должен быть понятен всей команде и будущим участникам.
Исследовательские разработки имеют фокус на обкатку идей. Системы, построенные для исследований, решают только ключевые проблемы, связанные с исследуемой проблемой, а не с требованиями пользователей или заказчиков.
Далее, над такими проектами редко работают большими коллективами, а также у них нет дедлайнов и постоянно меняющихся требований.
Поэтому не имеет смысла предъявлять академическим проектам требования коммерческих. Разные задачи, разные инструменты.
>и это проблема всего русского программирования, когда наши в первую очередь стремятся всё переписать с нуля, чтобы избавиться от прошлого говнокода, переписывают, а затем приходит другой русский и ужасается и начинает переписывать сново с нуля.
>Огромная проблема в том, что преподавательская теория оторванная от практики
Вполне вероятно, что он просто не может мотивированно объяснить, зачем нужна его теория, или может, но студенты не готовы воспринять ее.
>нужно как в нормальных странах, чтобы преподаватель был обязан работать время от времени по специальности.
Может быть и такое, что препод занимается проблемой, для которой нет рынка либо он очень узок. Например, препод исследует применение атрибутных грамматик для разработки компиляторов. Куда ему идти работать?
Может быть, вместо того, чтобы отшучиваться, вы напишите, чему вас научила книга? Заставила посмотреть на что-то по-новому, раскрыла какие-то новые идеи? Интересно ведь.
Ага. Было бы интересно посмотреть, что из ATS можно приделать к D.
Например, реализовать индексированные монады, а с помощью них — легковесные зависимые типы (как у Киселева тут).
И это всё под бюджет шнурка для обуви в стране, где айтишка на 97% состоит из продажи железа!
Если кратко: очень много нужно стараться, чтобы в Windows Mobile получилось удобное в использовании и приятное зору приложение. Конечно, есть кастомные контролы и тулкиты, которые решают эти проблемы, но как-то слишком много телодвижений, как по мне.
То ли дело в iOS — вся разработка изначально под тач-скрин, с хорошими гайдлайнами по дизайну, и это по-умолчанию (хотя старание никто не отменял, конечно).
(под Андроид не разрабатывал да и не охота)
ДИСКЛЕЙМЕР: конечно, много в таких мнениях вкусовщины, но куда ж без нее :)
>Kindle DX
>$489
У меня таких денег нет.
Обязательно куплю, когда подешевеет. :)
Такими книгами являются, например, 'forall x', 'Proofs and Concepts', 'Programming Languages: Application and Interpretation'. Для личного пользования их можно распечатывать совершенно легально.
Я специально сделал на этом акцент, чтобы отсечь все разговоры о якобы простоте и логичности Си++.
>Я считаю, Ваш сарказм по поводу машины Тьюринга здесь неуместен.
Это не сарказм. Улыбнуло просто :)
>Под «безграничными возможностями» я подразумевал возможность работы в этом языке как на низком уровне, так и на высоком, поддержку нескольких парадигм программирования и т.д.
Вот так бы сразу и сказали.
>Взять ту же Java (которая также тьюринг-полная) — про неё можно сказать то же самое?
Можно. Надо только костылями подходящего размера запастись. :)
Вот, кстати, пейпер по теме:
domino.watson.ibm.com/comm/research_people.nsf/pages/dgrove.vee09.html
Си не оправдывает себя вовсе не потому, что он императивный, а потому, что предоставляет слабенькие средства создания и комбинирования абстракций.
Это сильно сказывается на разработке и поддержке больших систем.
>На тот момент, когда я о нём узнал, у меня были уже достаточно неплохие познания в C++, а начинать заново изучение нюансов очередного языка мне показалось не слишком разумной идеей
D 1.0 очень простой, и документация у него толковая. Учится не в пример легче Си++.
>учитывая тот факт, что востребованность D-программистов на рынке труда также не слишком впечатляет
Это такой аргумент против получения новых знаний? Очень грустно.
Если бы у Си++ была формальная семантика, тогда и можно было бы говорить о *объективной* последовательности и логичности. А покуда ее нет — эти критерии субъективны.
>Другое дело, что в нём достаточно много важных «мелочей», но это плата за практически безграничные возможности, которые данный язык предоставляет программисту.
О каких «безграничные возможностях» вы говорите? Он что, вычисляет больше, чем машина Тьюринга? :)
А вы переходите на личности.
Я просто хочу вам показать другой взгляд на проблему. :)
>к тому времени я уже понял, что работа для меня важнее теории, даваемой в универе, в чём ещё не раз убедился доучиваясь. я уверен, что 80% студентов в универе действительно учатся по ошибке, но и процент плохих преподователей примерно такой же.
Вы все правильно сделали. И это подтверждает мои слова — стране нужны ПТУшники, причем много.
Хотелось бы знать, почему The Humane Interface не рекомендуется к прочтению.
Да, в атрибутных грамматиках ничего сложного нет. Проблема в том, что у них очень мало применений, даже в компиляторостроении.
Интересная тема для исследования же.
И это правильно. Личность надо развивать всесторонне.
>почему же преподаватели не должны знать что-то кроме узкой области
Может быть, это просто у студентов кругозор слишком узок, чтобы понять, что кроме прикладных технологий существует что-то еще?
не представлять что нужно студентам в будущем.
Преподаватели должны дать основы, научить подходить ко всему систематически, последовательно.
А студенты должны сами изучать выходящие каждый год т.н. «новые» стопицот технологий, используя полученные в вузе знания и навыки.
>студент же не может отказаться от курса, сказав, что это ненужные знания, предназначенные для исследования идей, а он мечтает быть практиком (таких большинство).
Студент, на самом деле, мечтает быть не практиком, а ПТУшником. В вузе его учат строить дома, а он хочет забивать молотком гвозди.
Правда в том, что высшее образование ему не нужно.
>за рубежом как-то справляются с ситуацией, а у нас
За рубежом справляются именно так, как я написал выше.
У нас же
>теоретики и исследуют, исследуют, но ничего не открывают.
Вы можете доказать это утверждение? :)
>система прогнила и требует модификации, это требования реального мира, а не заказчиков.
Да. Я согласен с тем, что всех, кто хочет быть ПТУшником, надо отправлять в ПТУ.
А может быть, студенты все-таки не готовы понять? Вот вы поняли пример про атрибутные грамматики? Только честно. :)
>препод может идти туда же, куда затем пойдут студенты, которые прослушают его курс — в смежные области, чтобы понять, что такое командная работа, что такое писать так, чтобы могли его поддерживать и кустомизировать другие, что такое изменяющиеся требования…
Ох. Сколько заблуждений в одном предложении.
По пунктам.
Есть разработки коммерческие (направлены на зарабатывание денег), и есть разработки исследовательские, академические (направлены на изучение проблем, теоретических или практических). Это разные, но пересекающиеся, вещи. Их нельзя смешивать, так как к ним предъявляются существенно разные требования.
Для коммерческих разработок нужен развитый, стабильный, стандартный инструментарий (IDE, toolchain, groupware и т.д). Над ними работают команды, очень важны такие качества кода, как понятность, поддерживаемость, документированность. Также используемый язык программирования должен быть понятен всей команде и будущим участникам.
Исследовательские разработки имеют фокус на обкатку идей. Системы, построенные для исследований, решают только ключевые проблемы, связанные с исследуемой проблемой, а не с требованиями пользователей или заказчиков.
Далее, над такими проектами редко работают большими коллективами, а также у них нет дедлайнов и постоянно меняющихся требований.
Поэтому не имеет смысла предъявлять академическим проектам требования коммерческих. Разные задачи, разные инструменты.
>и это проблема всего русского программирования, когда наши в первую очередь стремятся всё переписать с нуля, чтобы избавиться от прошлого говнокода, переписывают, а затем приходит другой русский и ужасается и начинает переписывать сново с нуля.
Больше похоже на поведение новичков. :)
А критика скудна на аргументацию.
>Зачем в таком случае он нужен?
Т.е. вы считаете, что для получения знаний свою голову подключать не нужно?
Как вообще можно чему-то научиться, совершенно не прилагая усилий?
Вполне вероятно, что он просто не может мотивированно объяснить, зачем нужна его теория, или может, но студенты не готовы воспринять ее.
>нужно как в нормальных странах, чтобы преподаватель был обязан работать время от времени по специальности.
Может быть и такое, что препод занимается проблемой, для которой нет рынка либо он очень узок. Например, препод исследует применение атрибутных грамматик для разработки компиляторов. Куда ему идти работать?
Concurrent programming! Нынче все хотят быть конкурентными. :)
Например, реализовать индексированные монады, а с помощью них — легковесные зависимые типы (как у Киселева тут).