|
|
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
И опять тема холивара. Но вдруг кто-то выскажет ценную идею? Ситуация: курсы проф. переподготовки, т.е. студенты в основном имеют высшее образование, но решили обучиться программированию. Они уже прошли курс языка С, где кроме его синтаксиса изучили базовые структуры и алгоритмы (сортировки, поиск, списки, и т.п.). Цель: за 8 лекций и 4 лабораторных ввести людей в мир ООП. Вопрос: на базе чего это лучше делать - С++ или C#? (пробовал и так, и так - не могу пока понять, что лучше подходит) Критерии: с моей точки зрения, курс должен научить студентов мыслить объектно. Все подробности просто не успеть охватить, но если будет хороший фундамент - они дальше сами, на практике, подтянут что нужно (кто захочет, конечно). С этой точки зрения С++ предпочтительнее, поскольку: 1. Дает более глубокое понимание того, как это все работает. 2. Дает свободу дальнейшего пути: можно изучить C#\Java (после С++ это будет легче, чем идти наоборот), захотят уйти со стека MS - пожалуйста, Qt, мир Linux и пр. А с C# им будет сложно уйти в С++, и они по моей вине станут "заложниками" MS-технологий. С точки зрения студентов, важен "быстрый старт", они хотят как можно быстрее начать что-то делать, видеть результат, и иметь шанс найти работу. Начинается это уже при написании диплома в конце обучения: C# более приветлив по отношению к программисту, желающему быстро наклепать симпатичное Desktop-приложение. ДА и в целом, на C# ряд типовых задач (формочки, БД, сеть, графика) они решат легче и быстрее, без всяких сторонних библиотек и пр. Судя по вакансиям, .net-разработчики как-то более востребованы, чем плюсовики. Такая вот дилемма. Поделитесь опытом и мыслями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 11:57 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
UPD: да, и забыл упомянуть еще и такой момент: переход C=>C++ более прост, чем C=>C# (IMHO). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 11:59 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
ИМХО 8 лекций - не так уж и много, чтобы забивать им еще голову новым языком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 12:04 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
Может, конечно, "C# более приветлив по отношению к программисту, желающему быстро наклепать симпатичное Desktop-приложение", но и для C++ есть фреймворки, которые это позволяют. Не вижу здесь серьезного преимущества C# над С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 12:11 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
TopSpace, Скорее C++, потому что сохраняется понятие "адреса" и разделение понятий "переменная" и "ссылка на переменную". Для формочек, положим, Qt - с него на C# тоже несложно. Хотя, воля Ваша, "цель: ввести людей в мир ООП" - это странная, неоднозначная постановка задачи и при разных её трактовках будут получаться разные советы. Скажем, C++ позволяет хотя бы пунктиром наметить, как всё то же самое можно было бы получить на чистом C, что полезно для понимания подлежащей механики, но хороший вопрос, насколько оно в Вашем случае надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 12:14 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
HettИМХО 8 лекций - не так уж и много, чтобы забивать им еще голову новым языком. ООП стоит в программе, ну и штука это нужная. Как его изучать без "нового языка"? Конечно, хотелось бы говорить об ООП без привязки к языку, но это не реально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 13:29 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
pirovindos, но и для C++ есть фреймворки, которые это позволяют. Не вижу здесь серьезного преимущества C# над С++. Вы поставьте себя на место человека, который пока не знает почти ничего! Ему придется очень попотеть, чтобы подключить boost и пр. Да, опыт этот нужен - но не все сразу. Зачем сейчас человеку заморачиваться с поиском хорошей библиотеки для UI, качать какие-то фреймворки для работы с сетью (тот же boost::asio), когда в .net это все есть, и используется одним кликом мыши? Скажу больше. А может для лучшего усвоения ООП человеку и не нужно отвлекаться на технические заморочки? Преимущество .net на C++ в богатстве стандартной библиотеки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 13:33 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
AbstractionTopSpace, Скорее C++, потому что сохраняется понятие "адреса" и разделение понятий "переменная" и "ссылка на переменную". В C# подобные вещи есть, просто слегка завуалировано. Есть value-types и reference-types. И в чем-то это даже проще: класс - это всегда ссылка на объект, число - это всегда значение, и всего делов. AbstractionTopSpace, "цель: ввести людей в мир ООП" - это странная, неоднозначная постановка задачи Да, а что делать? Есть примерная программа, и никто не скажет, как оно должно быть, из каких критериев исходить. Отсюда и вопросы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 13:37 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
TopSpacepirovindos, но и для C++ есть фреймворки, которые это позволяют. Не вижу здесь серьезного преимущества C# над С++. Вы поставьте себя на место человека, который пока не знает почти ничего! Ему придется очень попотеть, чтобы подключить boost и пр. Да, опыт этот нужен - но не все сразу. Зачем сейчас человеку заморачиваться с поиском хорошей библиотеки для UI, качать какие-то фреймворки для работы с сетью (тот же boost::asio), когда в .net это все есть, и используется одним кликом мыши? Скажу больше. А может для лучшего усвоения ООП человеку и не нужно отвлекаться на технические заморочки? Преимущество .net на C++ в богатстве стандартной библиотеки. Согласен, если про "БД, сеть", то здесь есть преимущество в стандартных библиотеках у .net. Я в посте прямо написал, что не вижу преимуществ для "быстро наклепать симпатичное Desktop-приложение". Но если TopSpace Цель: за 8 лекций и 4 лабораторных ввести людей в мир ООП то при чем тут БД и сеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 13:42 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
TopSpaceКак его изучать без "нового языка"? Конечно, хотелось бы говорить об ООП без привязки к языку, но это не реально. по крайней мере у С и С++ базовая часть как-никак общая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 13:45 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
TopSpaceЦель: за 8 лекций и 4 лабораторных ввести людей в мир ООП. Имхо С# проще для старта. Это даст возможность быстро и просто применить навыки и получить толк . На чистые плюсы - очень мало времени. Уровень их знаний будет "совсем не коммерческим" То есть курс прошел, экзамен сдал - но написать толком ничего не могу Вопрос, насколько они знают С. Если тоже "по верхам" - то эти базовые знания подойдут для обоих языков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 13:54 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
pirovindos Согласен, если про "БД, сеть", то здесь есть преимущество в стандартных библиотеках у .net. Я в посте прямо написал, что не вижу преимуществ для "быстро наклепать симпатичное Desktop-приложение". Но если TopSpace Цель: за 8 лекций и 4 лабораторных ввести людей в мир ООП то при чем тут БД и сеть? Да вот даже просто наклепать формочку - на C# в разы проще, чем в MFC. А БД и сеть - это просто то, что понадобится вскоре после формочек. Про UI: можно бы взять Qt, но.. Изучить MFC и Qt - не успеть. Только Qt - сомнительная идея, по причине того, что MFC (да, до сих пор!) чаще встречается на старых проектах, некоторые работодатели выставляют даже требования в вакансии: опыт работы в Visual Studio (какой блин там опыт!). Тут опять история повторяется: как освоивший С++ легко справится с C#, так освоивший MFC будет петь от счастья работая с Qt. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:01 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
TopSpace А БД и сеть - это просто то, что понадобится вскоре после формочек. Тогда не вводите людей в заблуждение, поменяйте Цель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:03 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
HettTopSpaceКак его изучать без "нового языка"? Конечно, хотелось бы говорить об ООП без привязки к языку, но это не реально. по крайней мере у С и С++ базовая часть как-никак общая. Вот я тоже про это думал, как сделать переход? В С++ можно первую лекцию вообще не говорить про классы, и рассмотреть отличия С++ от С (перегрузка функций, оператор new, модификаторы static, inline и т.п.). Потом плавно перейти к классам. А в C# даже строку на экран не вывести без объявления класса со public static void Main. Но может это только мне кажется проблемным? Есть ведь и обратный эффект: трудно учить похожие языки. Попробуйте параллельно выучить испанский и итальянский, например) Путаница. Студенты часто путаются между C и C++, а C# все-таки подальше от С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:05 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
FantomnyИмхо С# проще для старта. Это даст возможность быстро и просто применить навыки и получить толк . На чистые плюсы - очень мало времени. Уровень их знаний будет "совсем не коммерческим" То есть курс прошел, экзамен сдал - но написать толком ничего не могу Согласен, но тут тоже палка о двух концах. Да, почему бы не давать людям легкий и мощный инструмент, позволяющий клепать программы - они быстро найдут себе хоть какую-то работу. Зато это вбросит в индустрию очередную порцию низкоквалифицированных разработчиков, от чего индустрия только страдает. С другой стороны: а может давать мощную основу (С++ за 8 супер-наполненных лекций и 4 лабы, сложностью как курсовик каждая) - тогда произойдет отсев, экзамен сдадут только те, кому это действительно интересно. Вариант хорош для общего блага, но не приятен желающим "легкого старта". Ну и сквозь такое сито могут не пройти потенциальные таланты, которые раскрылись бы позднее (видел пару примеров таких людей). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:12 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
TopSpaceAbstractionTopSpace, Скорее C++, потому что сохраняется понятие "адреса" и разделение понятий "переменная" и "ссылка на переменную". В C# подобные вещи есть, просто слегка завуалировано. Есть value-types и reference-types. И в чем-то это даже проще: класс - это всегда ссылка на объект, число - это всегда значение, и всего делов. AbstractionTopSpace, "цель: ввести людей в мир ООП" - это странная, неоднозначная постановка задачи Да, а что делать? Есть примерная программа, и никто не скажет, как оно должно быть, из каких критериев исходить. Отсюда и вопросы)По первому - не проще. Особенно когда добавляется ключевое слово ref . То есть, объяснить-то можно, но как бы при этом не пришлось привлекать аргумент "it's magic" в значимых объёмах. По второму - значит, надо конкретизировать. Если критериев нет, придумать какие угодно. Потолок наш лучший источник информации, в конце концов. Скажем, "целью программы обучения является ознакомление студентов с объектной парадигмой; разъяснение (технических, эстетических) преимуществ объектного программирования по сравнению с процедурным; краткое ознакомление с UML-нотацией; обучение рассмотрению задач в терминах объектов и их взаимодействия, основам написания программ на поддерживающем ООП языке; первичное ознакомление с понятием шаблонов проектирования" - тогда это C#/Java. Или "цель программы - ознакомление с принципами ООП, их реализацией на примере популярного языка программирования, понятий раннего и позднего связывания, их различий и преимуществ первого и второго; ознакомление с механиками обобщения алгоритмов (через наследование; через шаблоны); подробное рассмотрение механики динамического выделения ресурсов (памяти), освещение возникающих проблем и ООП-методов их разрешения; ознакомление с понятием библиотек классов, обучение их использованию в своих разработках" - тогда это C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:15 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
pirovindosTopSpace А БД и сеть - это просто то, что понадобится вскоре после формочек. Тогда не вводите людей в заблуждение, поменяйте Цель. Цель - ввести людей в ООП, но рисуя диаграммы и рассуждая о паттернах! Вспомните сами, с чего начинали. Нужен фан! Интересные примеры, прикольные задачи. Это в институте мы могли убить день ради реализации хитрого алгоритма для B-дерева. А тут - взрослые люди, выкраивающие свободное время на самообразование, не нужна им сухая теория, "такова селяви". Штуки вроде сетевого чата, клиента твиттера, простой игры, видеозахвата и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:21 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
(видел пару примеров таких людей). У нас в физмат гимназии преподавали примерно так... В результате кто "понимал и тянул" почти все стали тру-программерами Но, удивительно, из тех кто не понимал (не успевал) и не тянул - половина стала тоже программировать :) Зато это вбросит в индустрию очередную порцию низкоквалифицированных разработчиков, от чего индустрия только страдает По моему, все кто хочет - прогрессируют. Просто так проще начать... Если бы у вас был годовой курс - то можно подготовить хороших плюсовиков. В вашем формате - имхо это сомнительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:33 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
Abstraction, это уже довольно детальное описание цели. Это скорее не цель, а краткое содержание программы, т.к. остается вопрос: а ЗАЧЕМ человеку знать то-то и то-то? Да, изучение ООП само по себе целью быть не может. Так что, речь может идти о: а) Максимально эффективное "въезжание" в тему, чтобы как можно быстрее "встать на рельсы". Если не устроиться junior'ом, то хотя бы понять основы, и самостоятельно уже себя дотянуть. При этом подходе в курсе можно затрагивать элементы "профессиальной разработки", т.е. какие-то best practiсe на типичные ситуации, codestyle, методологии разработки, контроль версий и багтрекинг и т.п. b) Получить максимуально фундаментальную подготовку, т.е. глубоко изучить "недры" ООП, не затрагивая "профессиональные реалии". С одной стороны, первое человек получит уже на работе. С другой - оно ценнее, поскольку отражает реальный опыт, а не только толстые книги (которые они и так могут прочитать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:34 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
FantomnyЕсли бы у вас был годовой курс - то можно подготовить хороших плюсовиков. В вашем формате - имхо это сомнительно. Т.е. квалификация .net-чиков будет выше, чем у плюсовиков, подготовленных за равное время? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:38 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
TopSpaceОни уже прошли курс языка С, где кроме его синтаксиса изучили базовые структуры и алгоритмы (сортировки, поиск, списки, и т.п.). Цель: за 8 лекций и 4 лабораторных ввести людей в мир ООП. Objective-C ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:42 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
товарищ лектор, сам то как, ответишь за полиморфизм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:53 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
k0rvinTopSpaceОни уже прошли курс языка С, где кроме его синтаксиса изучили базовые структуры и алгоритмы (сортировки, поиск, списки, и т.п.). Цель: за 8 лекций и 4 лабораторных ввести людей в мир ООП. Objective-CИМХО, сомнительно. "Чистые" сигналы и концепция "класс как объект" - это хорошо, а вот отсутствие пространств имён, двойное именование аргументов методов, невозможность перегрузки функций - уже не айс. Есть риск застрять в этих частностях и деталях синтаксиса (только на объяснение того, что значит @property(weak, nonatomic) может уйти неприлично много времени). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 14:57 |
|
||
|
Преподавать C++ или C#?
|
|||
|---|---|---|---|
|
#18+
TopSpaceЦель: за 8 лекций и 4 лабораторных ввести людей в мир ООП. Если изучить ООП и клепать веб-интерфейсы и обычные казуальные Windows-формочки то пускай изучают С#. Это реально быстрый старт. Даже с точки зрения ООП С++ вобщем-то не рулит. Его сила вовсе не в ООП а в шаблонах и мета-программировании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 15:14 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=65&tid=1342152]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 450ms |

| 0 / 0 |
