Преподавание основ на примере С++/С#
От: flax Беларусь  
Дата: 12.10.04 10:22
Оценка:
Цель:
Систематизация современных концепций программирования (языковых возможностей), с иллюстрацией на C++/C#

Исходная посылка:
На мой вгляд, на основе C++ (c STL, BOOST, LOKI) и С# можно продемонстрировать основные "Внеязыковые" концепции программирования.

TODO
Не мог бы кто-либо привести ( как-нибудь структрурировано) основные концепции "современных" языков программирования, и дать основные примеры — параллели в C++ ( c всевозможными довесками), и шарпе.

Что есть

Мне в голову приходит сумбурно следующее
1. templates / generic
2. алгоритмы использования памяти + (переписываем new + советы по Мейерсу, то же самое но завернутое в std::allocator, boost) + на примере как в LOKI переписано для маленьких объектов / описание GC (например по Рихтеру)

Функторы, итераторы, диспетчиризация, процессы ( особенно в CLI )

итд
Re: Преподавание основ на примере С++/С#
От: Хитрик Денис Россия RSDN
Дата: 12.10.04 13:06
Оценка:
Вопрос 1: для кого предназначается курс?

Вопрос 2: что подразумевается под "концепцией программирования"?
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re[2]: Преподавание основ на примере С++/С#
От: flax Беларусь  
Дата: 12.10.04 14:56
Оценка:
Здравствуйте, Хитрик Денис, Вы писали:

ХД>Вопрос 1: для кого предназначается курс?

2 Цели:
1) Хочется самому уложить все в голове
2) Возможно(??) как спецкурс в Университете, т.е. for Advanced Students who concentrate to Design,C#, C++


ХД>Вопрос 2: что подразумевается под "концепцией программирования"?

Некоторые понятия и приемы организации программного кода — взятые не абстрактно ( напр. инкапсуляция, наследование — как философские понятия ), а в применении к современному процессу разработки.

Как это сказать?! Шаблоны, интерфесы, перегрузка, функторы, GC .... — они есть (классически реализуются/ны) в разных языках, но сравнения не проводились.(в том числе по сильным и слабым сторонам)

>В чём состоит проблема?

Выяснить параллели + выделить такие основные концепции
Re: Преподавание основ на примере С++/С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.10.04 15:26
Оценка: -2
Здравствуйте, flax, Вы писали:

F>Исходная посылка:

F>На мой вгляд, на основе C++ (c STL, BOOST, LOKI) и С# можно продемонстрировать основные "Внеязыковые" концепции программирования.

Тут рядом есть разгвор как раз на тему обучения программирования на С++. Я там уже высказывал мнение, что начинать учить писать на С++ не только не нужно, но и вредно.

С++ конечно интересен многими возможностями, но для начинающего он может сослужить плохую службу. Это верное средство запутать человека и навсегда испорить ему понятиях об ОО и струтурном программировании.
... << RSDN@Home 1.1.4 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Преподавание основ на примере С++/С#
От: LaptevVV Россия  
Дата: 12.10.04 15:29
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, flax, Вы писали:


F>>Исходная посылка:

F>>На мой вгляд, на основе C++ (c STL, BOOST, LOKI) и С# можно продемонстрировать основные "Внеязыковые" концепции программирования.

VD>Тут рядом есть разгвор как раз на тему обучения программирования на С++. Я там уже высказывал мнение, что начинать учить писать на С++ не только не нужно, но и вредно.


VD>С++ конечно интересен многими возможностями, но для начинающего он может сослужить плохую службу. Это верное средство запутать человека и навсегда испорить ему понятиях об ОО и струтурном программировании.

Да, С++ — это язык, конечно, не для начинающего. Но и Дейкстра не мог его освоить — я тут уже приводил ссылку на Вирта, где сей факт отмечен. С точки зрения классики — С++ это гадкий утенок. Но работает, блин!!!!!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Преподавание основ на примере С++/С#
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 12.10.04 16:16
Оценка:
Здравствуйте, flax, Вы писали:

F>На мой вгляд, на основе C++ (c STL, BOOST, LOKI) и С# можно продемонстрировать основные "Внеязыковые" концепции программирования.


Ну... пока что все перечисленное мне кажеться достаточно специфичным для C++ и/или C#. Мне кажеться, что идеи, заложеный в STL, с большим трудом поддаются миграции в другие языки программирования. Перечисленое я бы озаглавил скорее как "специфика разработки на C++", но не "внеязыковые концепции"
Re: Преподавание основ на примере С++/С#
От: Quintanar Россия  
Дата: 12.10.04 16:28
Оценка: 1 (1) +1
Здравствуйте, 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# или типа того.
Re[3]: Преподавание основ на примере С++/С#
От: Хитрик Денис Россия RSDN
Дата: 12.10.04 19:40
Оценка: 74 (4) +2
Здравствуйте, flax.

Везде моё скромное и не очень мнение. Могу ошибаться.

ХД>>Вопрос 1: для кого предназначается курс?

F>2 Цели:
F>1) Хочется самому уложить все в голове
F>2) Возможно(??) как спецкурс в Университете, т.е. for Advanced Students who concentrate to Design,C#, C++

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

ХД>>Вопрос 2: что подразумевается под "концепцией программирования"?

F>Некоторые понятия и приемы организации программного кода — взятые не абстрактно ( напр. инкапсуляция, наследование — как философские понятия ), а в применении к современному процессу разработки.
F>Как это сказать?! Шаблоны, интерфесы, перегрузка, функторы, GC .... — они есть (классически реализуются/ны) в разных языках, но сравнения не проводились.(в том числе по сильным и слабым сторонам)

Позволю себе замечание по второму абзацу: вы перечислили множество понятий. Но ваш список несвязан. Нет контекста, объединяющего все его элементы, который задаёт им всем смысл. Поэтому...
Что, если подойти к обзорному курсу по концепциям с другой точки зрения. Шагать не от имеющихся средств и решений (как вы пытаетесь, по-моему) к истинным (классическим), а наоборот. Выявить прежде всего проблемы, которые появлялись перед поколениями программистов, обрисовать задачи, к которым приводил анализ проблемы, и уже потом познакомиться с существующими на сегодня (просто других нет, а не потому, что это классика или окончательное решение) решениями возникших задач.

Ведь геометрия возникла не от того, что Евклид придумал точку и прямую. Геометрия возникла, когда понадобилось делить землю на части. Так и с ООП — возникло-то и живёт оно не потому, что кто-то подумал и решил "Так будет хорошо". А просто возникли вполне определённые трудности с возросшим объемом программного кода и с отражением в этом самом коде модели внешнего мира. ООП стало временным ответом на возникшие задачи. Придёт время и возникнут задачи, которые потребуют нового подхода и оно отойдёт.

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

Удачи!
Правила нашего с вами форума.
Как правильно задавать вопросы. © 2001 by Eric S. Raymond; перевод: © 2002 Валерий Кравчук.
Re: Преподавание основ на примере С++/С#
От: Aquary Россия https://wmspanel.com/
Дата: 13.10.04 02:00
Оценка: 6 (2)
Здравствуйте, flax, Вы писали:

F> Систематизация современных концепций программирования (языковых возможностей), с иллюстрацией на C++/C#


F>Не мог бы кто-либо привести ( как-нибудь структрурировано) основные концепции "современных" языков программирования, и дать основные примеры — параллели в C++ ( c всевозможными довесками), и шарпе.


Для начала прочитай Основные концепции языков программирования Роберта Себесты. Для преподавания твоей дисциплины — must have.
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming
https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
http://scm-notes.blogspot.com/ — Блог об управлении конфигурацией
Re[2]: Преподавание основ на примере С++/С#
От: flax Беларусь  
Дата: 13.10.04 06:45
Оценка:
Здравствуйте, Aquary, Вы писали:

A> Основные концепции языков программирования Роберта Себесты. Для преподавания твоей дисциплины — must have.


Cпасибо огромное, просмотрел оглавление — очень привлекательно!


Re[3]: Преподавание основ на примере С++/С#
От: Aquary Россия https://wmspanel.com/
Дата: 13.10.04 06:54
Оценка:
Здравствуйте, flax, Вы писали:

F>Cпасибо огромное, просмотрел оглавление — очень привлекательно!


вот и я про то же

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

особо понравилась глава про шаблоны — оказалось, что они поддерживаются только в С++ и в Аде
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming
https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
http://scm-notes.blogspot.com/ — Блог об управлении конфигурацией
Re: Преподавание основ на примере С++/С#
От: LaptevVV Россия  
Дата: 13.10.04 06:58
Оценка:
Здравствуйте, 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 )


Не, тут как раз больше перечислена специфика С++. Где еще функторы в таком виде есть? Или темплейты !!!!!
А вот контейнеры — это общее. И — различные варианты реализации с разными дисциплинами выделения памяти. Это общее.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Преподавание основ на примере С++/С#
От: LaptevVV Россия  
Дата: 13.10.04 06:59
Оценка:
Здравствуйте, Aquary, Вы писали:

A>Здравствуйте, flax, Вы писали:


F>> Систематизация современных концепций программирования (языковых возможностей), с иллюстрацией на C++/C#


F>>Не мог бы кто-либо привести ( как-нибудь структрурировано) основные концепции "современных" языков программирования, и дать основные примеры — параллели в C++ ( c всевозможными довесками), и шарпе.


A>Для начала прочитай Основные концепции языков программирования Роберта Себесты. Для преподавания твоей дисциплины — must have.

Есть еще БЛЕСТЯЩАЯ книга Бен Ари из той же серии. на год-два раньше вышла.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Преподавание основ на примере С++/С#
От: flax Беларусь  
Дата: 13.10.04 07:03
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>VD>>Тут рядом есть разгвор как раз на тему обучения программирования на С++. Я там уже высказывал мнение, что начинать учить писать на С++ не только не нужно, но и вредно.


VD>>С++ конечно интересен многими возможностями, но для начинающего он может сослужить плохую службу. Это верное средство запутать человека и навсегда испорить ему понятиях об ОО и струтурном программировании.

LVV>Да, С++ — это язык, конечно, не для начинающего. Но и Дейкстра не мог его освоить — я тут уже приводил ссылку на Вирта, где сей факт отмечен. С точки зрения классики — С++ это гадкий утенок. Но работает, блин!!!!!

for Advanced Students that have already concentrated on Design,C#, C++

Т.е. я НЕ собираюсь учить C++, или рассказывать дотнет. Только акцентировать на взаимосвязь Design — концепции и обеспечить более глубокое понимание. Если хотите, заинтересовать в более глубоком изучении того, что люди УЖЕ в некоторой степени учили..

PS Если найдется, кому это будет интересно.

PPS Но самому интересно.
Re[3]: Преподавание основ на примере С++/С#
От: Aquary Россия https://wmspanel.com/
Дата: 13.10.04 07:12
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Есть еще БЛЕСТЯЩАЯ книга Бен Ари из той же серии. на год-два раньше вышла.


ссылочку кинете?
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming
https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
http://scm-notes.blogspot.com/ — Блог об управлении конфигурацией
Re[4]: Преподавание основ на примере С++/С#
От: LaptevVV Россия  
Дата: 13.10.04 07:31
Оценка:
Здравствуйте, Aquary, Вы писали:

A>Здравствуйте, LaptevVV, Вы писали:


LVV>>Есть еще БЛЕСТЯЩАЯ книга Бен Ари из той же серии. на год-два раньше вышла.


A>ссылочку кинете?

Вот эта
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Преподавание основ на примере С++/С#
От: flax Беларусь  
Дата: 13.10.04 07:39
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>F>>1. templates / generic

F>>2. алгоритмы использования памяти + (переписываем new + советы по Мейерсу, то же самое но завернутое в std::allocator, boost) + на примере как в LOKI переписано для маленьких объектов / описание GC (например по Рихтеру)

F>>Функторы, итераторы, диспетчиризация, процессы ( особенно в CLI )


LVV>Не, тут как раз больше перечислена специфика С++. Где еще функторы в таком виде есть? Или темплейты !!!!!

LVV>А вот контейнеры — это общее. И — различные варианты реализации с разными дисциплинами выделения памяти. Это общее.

В таком нету. Но может интересно показать
Functor
-------------------------------------
Семантика функторов,
Функторы
STL (
bool operator () (Thing* obj) { return /*вычисляем*/; }
+ про предикаты )

Loki ( Functor + BindFirst + Chain)

Loki functor vs Boost.function (differences)

C# delegate ( и проводим сравнением Operator+ делегатов с Loki:Chain )




Semantic Pointer
--------------------------------
C++ ( роняем слезу)
STL ( auto_ptr )
Loki ( smart_ptr <storage, ownership, conversion, cheaking>)
?? C# reference types
Re[5]: Преподавание основ на примере С++/С#
От: Aquary Россия https://wmspanel.com/
Дата: 13.10.04 08:15
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>>>Есть еще БЛЕСТЯЩАЯ книга Бен Ари из той же серии. на год-два раньше вышла.

A>>ссылочку кинете?
LVV>Вот эта

"...В книге рассматриваются базовые понятия языков программирования: среды программирования,...."
хм... среда программирования — это ведь не язык

"..Основное внимание уделяется языкам C++ и Ada 95, однако не остаются забытыми Pascal, Fortran, PL/I, Lisp и другие.."
"...Отдельная глава посвящена модели и языку Java..."
Языково-ориентированный подход получается То есть сильная привязка к конкретике, имхо...
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming
https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
http://scm-notes.blogspot.com/ — Блог об управлении конфигурацией
Re[6]: Преподавание основ на примере С++/С#
От: LaptevVV Россия  
Дата: 13.10.04 08:37
Оценка: 5 (1)
Здравствуйте, Aquary, Вы писали:

A>Здравствуйте, LaptevVV, Вы писали:


LVV>>>>Есть еще БЛЕСТЯЩАЯ книга Бен Ари из той же серии. на год-два раньше вышла.

A>>>ссылочку кинете?
LVV>>Вот эта

A>"...В книге рассматриваются базовые понятия языков программирования: среды программирования,...."

A>хм... среда программирования — это ведь не язык

A>"..Основное внимание уделяется языкам C++ и Ada 95, однако не остаются забытыми Pascal, Fortran, PL/I, Lisp и другие.."

A>"...Отдельная глава посвящена модели и языку Java..."
A>Языково-ориентированный подход получается То есть сильная привязка к конкретике,
имхо...
Если б я обращал внимание на аннотации интернет-магазинов...
Методический совет МГУ принял ее в качестве основного учебника по тематике языков программирования. Язык — блестящий. А потом, я например, в ней прочитал про модель параллельных процессор Linda. Как-то мне раньше не попадалось ... Хотя я много книжек разных читаю.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Преподавание основ на примере С++/С#
От: Quintanar Россия  
Дата: 13.10.04 09:07
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Не, тут как раз больше перечислена специфика С++. Где еще функторы в таком виде есть? Или темплейты !!!!!


А что в С++ понимается под функторами?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.