Цель:
Систематизация современных концепций программирования (языковых возможностей), с иллюстрацией на C++/C#
Исходная посылка:
На мой вгляд, на основе C++ (c STL, BOOST, LOKI) и С# можно продемонстрировать основные "Внеязыковые" концепции программирования.
TODO
Не мог бы кто-либо привести ( как-нибудь структрурировано) основные концепции "современных" языков программирования, и дать основные примеры — параллели в C++ ( c всевозможными довесками), и шарпе.
Что есть
Мне в голову приходит сумбурно следующее
1. templates / generic
2. алгоритмы использования памяти + (переписываем new + советы по Мейерсу, то же самое но завернутое в std::allocator, boost) + на примере как в LOKI переписано для маленьких объектов / описание GC (например по Рихтеру)
Функторы, итераторы, диспетчиризация, процессы ( особенно в CLI )
Здравствуйте, Хитрик Денис, Вы писали:
ХД>Вопрос 1: для кого предназначается курс?
2 Цели:
1) Хочется самому уложить все в голове
2) Возможно(??) как спецкурс в Университете, т.е. for Advanced Students who concentrate to Design,C#, C++
ХД>Вопрос 2: что подразумевается под "концепцией программирования"?
Некоторые понятия и приемы организации программного кода — взятые не абстрактно ( напр. инкапсуляция, наследование — как философские понятия ), а в применении к современному процессу разработки.
Как это сказать?! Шаблоны, интерфесы, перегрузка, функторы, GC .... — они есть (классически реализуются/ны) в разных языках, но сравнения не проводились.(в том числе по сильным и слабым сторонам)
>В чём состоит проблема?
Выяснить параллели + выделить такие основные концепции
Здравствуйте, flax, Вы писали:
F>Исходная посылка: F>На мой вгляд, на основе C++ (c STL, BOOST, LOKI) и С# можно продемонстрировать основные "Внеязыковые" концепции программирования.
Тут рядом есть разгвор как раз на тему обучения программирования на С++. Я там уже высказывал мнение, что начинать учить писать на С++ не только не нужно, но и вредно.
С++ конечно интересен многими возможностями, но для начинающего он может сослужить плохую службу. Это верное средство запутать человека и навсегда испорить ему понятиях об ОО и струтурном программировании.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, flax, Вы писали:
F>>Исходная посылка: F>>На мой вгляд, на основе C++ (c STL, BOOST, LOKI) и С# можно продемонстрировать основные "Внеязыковые" концепции программирования.
VD>Тут рядом есть разгвор как раз на тему обучения программирования на С++. Я там уже высказывал мнение, что начинать учить писать на С++ не только не нужно, но и вредно.
VD>С++ конечно интересен многими возможностями, но для начинающего он может сослужить плохую службу. Это верное средство запутать человека и навсегда испорить ему понятиях об ОО и струтурном программировании.
Да, С++ — это язык, конечно, не для начинающего. Но и Дейкстра не мог его освоить — я тут уже приводил ссылку на Вирта, где сей факт отмечен. С точки зрения классики — С++ это гадкий утенок. Но работает, блин!!!!!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, flax, Вы писали:
F>На мой вгляд, на основе C++ (c STL, BOOST, LOKI) и С# можно продемонстрировать основные "Внеязыковые" концепции программирования.
Ну... пока что все перечисленное мне кажеться достаточно специфичным для C++ и/или C#. Мне кажеться, что идеи, заложеный в STL, с большим трудом поддаются миграции в другие языки программирования. Перечисленое я бы озаглавил скорее как "специфика разработки на C++", но не "внеязыковые концепции"
Здравствуйте, flax, Вы писали:
F>Цель: F> Систематизация современных концепций программирования (языковых возможностей), с иллюстрацией на C++/C#
F>Исходная посылка: F>На мой вгляд, на основе C++ (c STL, BOOST, LOKI) и С# можно продемонстрировать основные "Внеязыковые" концепции программирования.
F>TODO F>Не мог бы кто-либо привести ( как-нибудь структрурировано) основные концепции "современных" языков программирования, и дать основные примеры — параллели в C++ ( c всевозможными довесками), и шарпе.
F>Что есть
F>Мне в голову приходит сумбурно следующее F>1. templates / generic F>2. алгоритмы использования памяти + (переписываем new + советы по Мейерсу, то же самое но завернутое в std::allocator, boost) + на примере как в LOKI переписано для маленьких объектов / описание GC (например по Рихтеру)
F>Функторы, итераторы, диспетчиризация, процессы ( особенно в CLI )
Некоторые утверждают, что все нужно было изобретено еще при создании Лиспа. И, действительно, почти все, что здесь перечисленно, там есть, а остальное не имеет в его рамках значения. Так что не стоит бросаться громкими словами типа Систематизация современных концепций, поскольку во-первых то, что есть в С++ и С# далеко не современно, а во-вторых, есть множество полезных концепций, которые там отсутствуют. Если называть, так поскромнее — Продвинутые приемы программирования на С++ и C# или типа того.
Везде моё скромное и не очень мнение. Могу ошибаться.
ХД>>Вопрос 1: для кого предназначается курс? F>2 Цели: F>1) Хочется самому уложить все в голове F>2) Возможно(??) как спецкурс в Университете, т.е. for Advanced Students who concentrate to Design,C#, C++
Вот сначала надо, конечно, уложить всё у себя в голове. У вас, мне кажется, там большая каша: смесь ощущения больших возможностей и какие-то отрывочные сведения о возникающих задачах и способах их решения.
ХД>>Вопрос 2: что подразумевается под "концепцией программирования"? F>Некоторые понятия и приемы организации программного кода — взятые не абстрактно ( напр. инкапсуляция, наследование — как философские понятия ), а в применении к современному процессу разработки. F>Как это сказать?! Шаблоны, интерфесы, перегрузка, функторы, GC .... — они есть (классически реализуются/ны) в разных языках, но сравнения не проводились.(в том числе по сильным и слабым сторонам)
Позволю себе замечание по второму абзацу: вы перечислили множество понятий. Но ваш список несвязан. Нет контекста, объединяющего все его элементы, который задаёт им всем смысл. Поэтому...
Что, если подойти к обзорному курсу по концепциям с другой точки зрения. Шагать не от имеющихся средств и решений (как вы пытаетесь, по-моему) к истинным (классическим), а наоборот. Выявить прежде всего проблемы, которые появлялись перед поколениями программистов, обрисовать задачи, к которым приводил анализ проблемы, и уже потом познакомиться с существующими на сегодня (просто других нет, а не потому, что это классика или окончательное решение) решениями возникших задач.
Ведь геометрия возникла не от того, что Евклид придумал точку и прямую. Геометрия возникла, когда понадобилось делить землю на части. Так и с ООП — возникло-то и живёт оно не потому, что кто-то подумал и решил "Так будет хорошо". А просто возникли вполне определённые трудности с возросшим объемом программного кода и с отражением в этом самом коде модели внешнего мира. ООП стало временным ответом на возникшие задачи. Придёт время и возникнут задачи, которые потребуют нового подхода и оно отойдёт.
Это я к тому, что стоит идти от проблем, от их истории и причин, от возникающих задач к решениям.
И если вам нужен обзорный широкий курс, вы уже не обойдётесь плюсами и шарпом — придётся смотреть и принципиально иные языки: функциональные, логические и т. д. У них своя определённая ниша, с которой их пока никто сдвинуть не может.
Здравствуйте, flax, Вы писали:
F> Систематизация современных концепций программирования (языковых возможностей), с иллюстрацией на C++/C#
F>Не мог бы кто-либо привести ( как-нибудь структрурировано) основные концепции "современных" языков программирования, и дать основные примеры — параллели в C++ ( c всевозможными довесками), и шарпе.
Здравствуйте, flax, Вы писали:
F>Cпасибо огромное, просмотрел оглавление — очень привлекательно!
вот и я про то же
очень хорошая структура материала, нет никакого фанатизма или предвзятого сравнения — рассматриваются именно концепции, языки же даются в качестве иллюстраций.
особо понравилась глава про шаблоны — оказалось, что они поддерживаются только в С++ и в Аде
Здравствуйте, flax, Вы писали:
F>Цель: F> Систематизация современных концепций программирования (языковых возможностей), с иллюстрацией на C++/C#
F>Исходная посылка: F>На мой вгляд, на основе C++ (c STL, BOOST, LOKI) и С# можно продемонстрировать основные "Внеязыковые" концепции программирования.
F>TODO F>Не мог бы кто-либо привести ( как-нибудь структрурировано) основные концепции "современных" языков программирования, и дать основные примеры — параллели в C++ ( c всевозможными довесками), и шарпе.
F>Что есть
F>Мне в голову приходит сумбурно следующее F>1. templates / generic F>2. алгоритмы использования памяти + (переписываем new + советы по Мейерсу, то же самое но завернутое в std::allocator, boost) + на примере как в LOKI переписано для маленьких объектов / описание GC (например по Рихтеру)
F>Функторы, итераторы, диспетчиризация, процессы ( особенно в CLI )
Не, тут как раз больше перечислена специфика С++. Где еще функторы в таком виде есть? Или темплейты !!!!!
А вот контейнеры — это общее. И — различные варианты реализации с разными дисциплинами выделения памяти. Это общее.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Aquary, Вы писали:
A>Здравствуйте, flax, Вы писали:
F>> Систематизация современных концепций программирования (языковых возможностей), с иллюстрацией на C++/C#
F>>Не мог бы кто-либо привести ( как-нибудь структрурировано) основные концепции "современных" языков программирования, и дать основные примеры — параллели в C++ ( c всевозможными довесками), и шарпе.
A>Для начала прочитай Основные концепции языков программирования Роберта Себесты. Для преподавания твоей дисциплины — must have.
Есть еще БЛЕСТЯЩАЯ книга Бен Ари из той же серии. на год-два раньше вышла.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>VD>>Тут рядом есть разгвор как раз на тему обучения программирования на С++. Я там уже высказывал мнение, что начинать учить писать на С++ не только не нужно, но и вредно.
VD>>С++ конечно интересен многими возможностями, но для начинающего он может сослужить плохую службу. Это верное средство запутать человека и навсегда испорить ему понятиях об ОО и струтурном программировании. LVV>Да, С++ — это язык, конечно, не для начинающего. Но и Дейкстра не мог его освоить — я тут уже приводил ссылку на Вирта, где сей факт отмечен. С точки зрения классики — С++ это гадкий утенок. Но работает, блин!!!!!
for Advanced Students that have already concentrated on Design,C#, C++
Т.е. я НЕ собираюсь учить C++, или рассказывать дотнет. Только акцентировать на взаимосвязь Design — концепции и обеспечить более глубокое понимание. Если хотите, заинтересовать в более глубоком изучении того, что люди УЖЕ в некоторой степени учили..
Здравствуйте, Aquary, Вы писали:
A>Здравствуйте, LaptevVV, Вы писали:
LVV>>Есть еще БЛЕСТЯЩАЯ книга Бен Ари из той же серии. на год-два раньше вышла.
A>ссылочку кинете? Вот эта
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>F>>1. templates / generic F>>2. алгоритмы использования памяти + (переписываем new + советы по Мейерсу, то же самое но завернутое в std::allocator, boost) + на примере как в LOKI переписано для маленьких объектов / описание GC (например по Рихтеру)
F>>Функторы, итераторы, диспетчиризация, процессы ( особенно в CLI )
LVV>Не, тут как раз больше перечислена специфика С++. Где еще функторы в таком виде есть? Или темплейты !!!!! LVV>А вот контейнеры — это общее. И — различные варианты реализации с разными дисциплинами выделения памяти. Это общее.
В таком нету. Но может интересно показать Functor
-------------------------------------
Семантика функторов,
Функторы
STL (
Здравствуйте, LaptevVV, Вы писали:
LVV>>>Есть еще БЛЕСТЯЩАЯ книга Бен Ари из той же серии. на год-два раньше вышла. A>>ссылочку кинете? LVV>Вот эта
"...В книге рассматриваются базовые понятия языков программирования: среды программирования,...."
хм... среда программирования — это ведь не язык
"..Основное внимание уделяется языкам C++ и Ada 95, однако не остаются забытыми Pascal, Fortran, PL/I, Lisp и другие.."
"...Отдельная глава посвящена модели и языку Java..."
Языково-ориентированный подход получается То есть сильная привязка к конкретике, имхо...
Здравствуйте, Aquary, Вы писали:
A>Здравствуйте, LaptevVV, Вы писали:
LVV>>>>Есть еще БЛЕСТЯЩАЯ книга Бен Ари из той же серии. на год-два раньше вышла. A>>>ссылочку кинете? LVV>>Вот эта
A>"...В книге рассматриваются базовые понятия языков программирования: среды программирования,...." A>хм... среда программирования — это ведь не язык
A>"..Основное внимание уделяется языкам C++ и Ada 95, однако не остаются забытыми Pascal, Fortran, PL/I, Lisp и другие.." A>"...Отдельная глава посвящена модели и языку Java..." A>Языково-ориентированный подход получается То есть сильная привязка к конкретике,
имхо...
Если б я обращал внимание на аннотации интернет-магазинов...
Методический совет МГУ принял ее в качестве основного учебника по тематике языков программирования. Язык — блестящий. А потом, я например, в ней прочитал про модель параллельных процессор Linda. Как-то мне раньше не попадалось ... Хотя я много книжек разных читаю.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Если б я обращал внимание на аннотации интернет-магазинов...
LVV>Методический совет МГУ принял ее в качестве основного учебника по тематике языков программирования. Язык — блестящий. А потом, я например, в ней прочитал про модель параллельных процессор Linda. Как-то мне раньше не попадалось ... Хотя я много книжек разных читаю.
в любом случае, если попадется у нас в магазинах — куплю
Здравствуйте, LaptevVV, Вы писали:
LVV>Если б я обращал внимание на аннотации интернет-магазинов...
к слову сказать, вспомнилась книга "С# в науке и технике" за авторством некоего Жаркова (доктора т.н.)....
сказать, что книга — это спрошное очковтирательство, наливание воды и просто полная чушь — не сказать ничего
Недели две всем отделом читали выдержки как анекдоты
Здравствуйте, Хитрик Денис, Вы писали: ХД>Не совсем в тему, может быть, но вот нашёл у себя книжку: ХД>Отзыв: http://www.osp.ru/os/2004/02/077.htm ХД>Домашняя страница автора + сама книга: http://ulm.uni.udm.ru/~nnn/ ХД>Вот про современные концепции программирования там обзорно и для начинающих (и не только) написано
Спасибо за ссылку на книгу. Также мне понравилось философски анимированное фото Н.Н.Непейводы.