Обучение программированию
От: ansi  
Дата: 06.03.05 06:02
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>Шарп просто не даст сделать множества ошибок. Тем самым он урпощает обучение и прививает хорошие манеры. Именно по этом я считаю его лучшим притендентом на первый язык.
На ошибках учятся. Точнее учатся на ошибках...

20.03.05 15:23: Ветка выделена из темы Почему нельзя преподавать C#
Автор: Quintanar
Дата: 02.03.05
— AndrewVK
Re[11]: Обучение программированию
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.03.05 20:13
Оценка: 1 (1) +3
Здравствуйте, ansi, Вы писали:

A>На ошибках учятся. Точнее учатся на ошибках...


Глупый учится на своих ошибках. Умный на чужих. Чужой опыт подсказывает, что единственный способ избежать множества ошибок на языках которые не предоставляют защиты от них — это выробатать правильный стиль программирования. И язык со встроенным контролем будет автоматически заставлять вырабатывать такой стиль. По сути Шапр — это С++ с огромным числом встроенных паттернов и ограничений направляющих программиста на хороший стиль программирования. В сочетании с приличной стредой разработки, которая автоматически выравнивает код, человк с детства получит хорошие привычки. Так что даже когда он перейдет к программированию на языках где всей этой поддержки нет, он все равно будет предерживаться заученных паттернов.

В общем, он просто поймет, что то что казалось ему само сабой разумеющимся является всего лишь автоматизаций работы и усилий которые в противном случае прийдется делать и контролировать вручную.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Обучение программированию
От: prVovik Россия  
Дата: 07.03.05 12:15
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Глупый учится на своих ошибках. Умный на чужих.


Интересно, а умные вообще в природе бывают?
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[12]: Обучение программированию
От: ansi  
Дата: 07.03.05 14:16
Оценка: 11 (3) +3 -1
Здравствуйте, VladD2, Вы писали:
VD> Глупый учится на своих ошибках. Умный на чужих. Чужой опыт подсказывает, что единственный способ избежать множества ошибок на языках которые не предоставляют защиты от них — это выробатать правильный стиль программирования. И язык со встроенным контролем будет автоматически заставлять вырабатывать такой стиль.
Вот только не надо тут про умных и глупых. Невозможно учиться только на чужих ошибках. Более того, свои ошибки имеют гораздо больший КПД, чем чужие. Да и все мы разные, и способ мышления разный, и, соответственно, ошибки у нас разные. Не знаю, что там подсказывает чужой опыт (Чей? А почему я должен ему доверять, этому опыту? А может это был Вася? ...). Знаю, что чтобы избежать ошибок, нужно сначала уяснить, что это — ошибка. А самый простой способ это понять — как раз ошибиться. Тем более что в процессе обучения это ничего не стоит (в плане денег). Далее, что значит "правильный стиль программирования" и как "менеджед" язык этот стиль будет вырабатывать?

VD> По сути Шапр — это С++ с огромным числом встроенных паттернов и ограничений направляющих программиста на хороший стиль программирования.

Ну во-первых, C# — это более Java. И идеологии схожи, и синтаксисы по сути одинаковые. J# короче. С C++ его, как и Java, объединяет только похожесть синтаксисов, но не идеологий. И во-вторых, какие такие паттерны...

VD> В сочетании с приличной стредой разработки, которая автоматически выравнивает код, человк с детства получит хорошие привычки.

Это вообще смешно. Сколько сред видел, код выравнивается везде. Тем более что к языку это вообще никакого отношения не имеет.

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

Можно долго ездить впереди рядом с папой, но будет ли потом хоть сколько-нибудь ощутимо легче самому сесть за руль? Вспомните, как вы в первый раз сели за руль. Как вдруг все знаки предательски исчезли из поля зрения, разметка расплылась, как вдруг откуда ни возьмись отовсюду стали появляться пешеходы, как вы ловили ямы, и как лихо вы объезжаете их сейчас, как отовсюду доносились крики "куда ты прешь, к@#$л", или "ты че, не видишь куда едешь?", как пот тек рекой... И папа уже не вырулит, случись что. И все "паттерны" рассыпаются в миг, потому что обстановка совсем иная и теперь в вашем полном распоряжении три педали, три зеркала и палка. И пройти это придется в любом случае. Эх, воспоминания нахлынули
Но мне все же интересно, что за заученные паттерны? Можно пару примеров?

Мне кажется, что идеальным вариантом для первого языка является старый добрый процедурный pascal. Потом можно давать параллельно Object Pascal и C++, ну а потом уже Java, C# и прочих товарищей. Задача то заключается в том, чтобы сначала изучить базу всех языков — переменные, функции, ветвления, циклы, рекурсии и т.п. Дальше всякие базовые алгоритмы типа сортировок, поиска подстроки в строке и т.п. Дальше даются основные структуры данных: стеки, очереди, деревья, графы и алгоритмы работы с ними. Параллельно можно вводить объекты, шаблоны. И только после этого можно давать функциональные и управляемые языки.
Re[13]: Обучение программированию
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.03.05 14:47
Оценка: :)
Здравствуйте, ansi, Вы писали:

A>...Невозможно учиться... свои ошибки...к@#$л"...И папа уже не вырулит...И все "паттерны" рассыпаются в миг....Потом можно давать параллельно Object Pascal


Ну, батенька это вы явно куда-то не туда зарулили. С такой любовью к тараху с неодушевленными приедметами вроде граблей первым языком конечно же должен быть какой-нить ассемблер или на худой конец K&R С без всяких плюсов. А то вадь от небольших граблей шишку можно и не заметить. Тут нужны более радикальные средства.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Обучение программированию
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 07.03.05 17:00
Оценка:
VladD2 пишет:
> Глупый учится на своих ошибках. Умный на чужих. Чужой опыт подсказывает,
> что единственный способ избежать множества ошибок на языках которые не
> предоставляют защиты от них — это выробатать *правильный* стиль
> программирования. И язык со встроенным контролем будет автоматически
> заставлять вырабатывать такой стиль. По сути Шапр — это С++ с огромным
> числом встроенных паттернов и ограничений направляющих программиста на
> хороший стиль программирования. В сочетании с приличной стредой
> разработки, которая автоматически выравнивает код, человк с детства
> получит хорошие привычки. Так что даже когда он перейдет к
> программированию на языках где всей этой поддержки нет, он все равно
> будет предерживаться заученных паттернов.

Это с каких пор аннотация типов я вляется инструментом выработки стиля?
И вообще, вместо общих заявляний привёл бы пример какой. Стиля до и
стиля после.

--
Andrei N.Sobchuck
JabberID: andreis@jabber.ru. ICQ UIN: 46466235.
Posted via RSDN NNTP Server 1.9
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[14]: Обучение программированию
От: ansi  
Дата: 08.03.05 08:07
Оценка: 33 (6) +1 :)
Dog>А почему вы не можете осваивать структуры данных и алгоритмы на шарпе ? Что вам мешает?
DB> Отсутствие средств процедурного программирования (чтобы показать человеку объявление переменной, нужно объяснять, что такое ООП). Маразм какой-то.
Это точно. А еще как-то придется объяснить, почему, собственно, он обязан это ООП использовать.

VD> Ну, батенька это вы явно куда-то не туда зарулили. С такой любовью к тараху с неодушевленными приедметами вроде граблей первым языком конечно же должен быть какой-нить ассемблер или на худой конец K&R С без всяких плюсов. А то вадь от небольших граблей шишку можно и не заметить. Тут нужны более радикальные средства.

А без этого никак. Весь смысл обучения в том, чтобы наступить на как можно большее число граблей именно во время обучения, чтобы потом их избегать. Я вообще не пойму, какие к черту, простите, грабли? Вас послушать, так до появления .NET программисты ночами не спали, страдали бедные. Никто за них проверки на выход из массива не делал, приходилось работать с этими мерзкими указателями (фу, гадость какая). Бедняжки! Как им было тяжело: и тут и там грабли, лопаты, тяпки всякие. Все с нетерпением ждали появления ЕГО самого (.NETа).

И тут пришел добрый дядя, и сказал: "И прозрейте же, дети мои. Да будет .NET. И забудете все, чему вас учили, ибо .NET — это и есть ВСЕ. .NET вездесущ. .NET — это новая операционная система. .NET — это новый компилятор. .NET – это новый Word. .NET — это чайник на вашей кухне. .NET — это телевизор в вашей спальне. .NET – это новый аппарат искусственного дыхания. .NET — новая 3D двига. NET — это ..." И настала эра .NET. И "прозрел" народ, и стал пихать этот .NET куда его только можно запихнуть.

Пора уже новую болезнь вводить – синдром .NET’а. Симптом: при любом упоминании C/C++, Pascal, Java, PHP,... начинает доказывать превосходство .NET над ним. Иногда не без пены у рта...

Ну, блин, вот почему-то очень часто встречаю перцев, которые ведут жесточайшую пропаганду этого самого .NET’а. Мол, нафига вам этот PHP – учите/пишите на ASP.NET. Зачем C++/Pascal, пиши на C#. Зачем учить народ C++, если за .NET’ом будущее. Теперь его суют в качестве первого языка для обучения... И т.д., и т.п. Типа, это панацея от всех бед. Чушь какая-то. Я совсем не против .NET, просто не надо в крайности бросаться. Всему свое место. И .NET’у кусок найдется.

Что касается ассемблера, то ассемблер — это не язык программирования как таковой. Во всяком случае, не из этой серии. Это – архитектура. И учить ей надо, но уж никак не базировать на ней алгоритмы.
Re[15]: Обучение программированию
От: Dog  
Дата: 08.03.05 13:14
Оценка:
(хехе, какие эмоции, я уже вижу пену у рта)

Dog>>А почему вы не можете осваивать структуры данных и алгоритмы на шарпе ? Что вам мешает?

DB>> Отсутствие средств процедурного программирования (чтобы показать человеку объявление переменной, нужно объяснять, что такое ООП). Маразм какой-то.
A>Это точно. А еще как-то придется объяснить, почему, собственно, он обязан это ООП использовать.
И в чём проблема ?
Ни кто и не говорил, что учим только шарп и всё.

VD>> Ну, батенька это вы явно куда-то не туда зарулили. С такой любовью к тараху с неодушевленными приедметами вроде граблей первым языком конечно же должен быть какой-нить ассемблер или на худой конец K&R С без всяких плюсов. А то вадь от небольших граблей шишку можно и не заметить. Тут нужны более радикальные средства.

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

A> Я вообще не пойму, какие к черту, простите, грабли?

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

[поток сознания пропущен]

A>Ну, блин, вот почему-то очень часто встречаю перцев, которые ведут жесточайшую пропаганду этого самого .NET’а. Мол, нафига вам этот PHP – учите/пишите на ASP.NET. Зачем C++/Pascal, пиши на C#. Зачем учить народ C++, если за .NET’ом будущее.

Ни кто не противопоставляет шарп С++у , как первому языку обучения. Вы хоть читаете о чём речь идёт ?

Давайте зададим вопрос в более простой форме. Зачем учить народ языку А, если за Б будущее?

A> Теперь его суют в качестве первого языка для обучения... И т.д., и т.п. Типа, это панацея от всех бед. Чушь какая-то.

Придержите коней Тут речь идёт иммено о том можно ли использовать шарп в качестве первого языка обучения. Чем тот же паскаль + дельфи лучше шарпа ? Почему нельзя время потраченное на изучение этих языков потратить на изучение основ ООП и шарпа или той же java ?

A>Что касается ассемблера, то ассемблер — это не язык программирования как таковой. Во всяком случае, не из этой серии. Это – архитектура. И учить ей надо, но уж никак не базировать на ней алгоритмы.

+1
... << RSDN@Home 1.1.4 beta 4 rev. 350>>
Re[15]: Обучение программированию
От: GlebZ Россия  
Дата: 08.03.05 16:12
Оценка: 1 (1)
Здравствуйте, ansi, Вы писали:

Dog>>А почему вы не можете осваивать структуры данных и алгоритмы на шарпе ? Что вам мешает?

DB>> Отсутствие средств процедурного программирования (чтобы показать человеку объявление переменной, нужно объяснять, что такое ООП). Маразм какой-то.
A>Это точно. А еще как-то придется объяснить, почему, собственно, он обязан это ООП использовать.

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

VD>> Ну, батенька это вы явно куда-то не туда зарулили. С такой любовью к тараху с неодушевленными приедметами вроде граблей первым языком конечно же должен быть какой-нить ассемблер или на худой конец K&R С без всяких плюсов. А то вадь от небольших граблей шишку можно и не заметить. Тут нужны более радикальные средства.

A>А без этого никак. Весь смысл обучения в том, чтобы наступить на как можно большее число граблей именно во время обучения, чтобы потом их избегать. Я вообще не пойму, какие к черту, простите, грабли? Вас послушать, так до появления .NET программисты ночами не спали, страдали бедные. Никто за них проверки на выход из массива не делал, приходилось работать с этими мерзкими указателями (фу, гадость какая). Бедняжки! Как им было тяжело: и тут и там грабли, лопаты, тяпки всякие. Все с нетерпением ждали появления ЕГО самого (.NETа).

Грабли граблям рознь. Многие грабли, которые были 20 лет назад — совершенно не используются в наше время. За 20 лет наука программирования прошла значительно вперед. Сделаны многие шаги изменению ситуации. Так может не стоит возвращаться к старым граблям?

A>И тут пришел добрый дядя, и сказал: "И прозрейте же, дети мои. Да будет .NET. И забудете все, чему вас учили, ибо .NET — это и есть ВСЕ. .NET вездесущ. .NET — это новая операционная система. .NET — это новый компилятор. .NET – это новый Word. .NET — это чайник на вашей кухне. .NET — это телевизор в вашей спальне. .NET – это новый аппарат искусственного дыхания. .NET — новая 3D двига. NET — это ..." И настала эра .NET. И "прозрел" народ, и стал пихать этот .NET куда его только можно запихнуть.


A>Пора уже новую болезнь вводить – синдром .NET’а. Симптом: при любом упоминании C/C++, Pascal, Java, PHP,... начинает доказывать превосходство .NET над ним. Иногда не без пены у рта...


A>Ну, блин, вот почему-то очень часто встречаю перцев, которые ведут жесточайшую пропаганду этого самого .NET’а. Мол, нафига вам этот PHP – учите/пишите на ASP.NET. Зачем C++/Pascal, пиши на C#. Зачем учить народ C++, если за .NET’ом будущее. Теперь его суют в качестве первого языка для обучения... И т.д., и т.п. Типа, это панацея от всех бед. Чушь какая-то. Я совсем не против .NET, просто не надо в крайности бросаться. Всему свое место. И .NET’у кусок найдется.

В данном топике, я увидел строго наоборот. Можно озаглавить. Нет NET.

A>Что касается ассемблера, то ассемблер — это не язык программирования как таковой. Во всяком случае, не из этой серии. Это – архитектура. И учить ей надо, но уж никак не базировать на ней алгоритмы.

Не стоит учить архитектуру на ассемблере. Разве что некоторая видимая часть процессора. Вот как инструмент системного программирования, тогда да.

С уважением, Gleb.
Re[15]: Обучение программированию
От: Дарней Россия  
Дата: 09.03.05 13:29
Оценка: +3
Здравствуйте, ansi, Вы писали:

A>Я вообще не пойму, какие к черту, простите, грабли? Вас послушать, так до появления .NET программисты ночами не спали, страдали бедные. Никто за них проверки на выход из массива не делал, приходилось работать с этими мерзкими указателями (фу, гадость какая). Бедняжки! Как им было тяжело: и тут и там грабли, лопаты, тяпки всякие. Все с нетерпением ждали появления ЕГО самого (.NETа).


А ты поищи списки уязвимостей в коммерческих (!) продуктах. Там то указатели да выходы за массив и аукнулись.

A>Пора уже новую болезнь вводить – синдром .NET’а. Симптом: при любом упоминании C/C++, Pascal, Java, PHP,... начинает доказывать превосходство .NET над ним. Иногда не без пены у рта...


Просто люди делятся на две категории. На тех, кто прочувствовал необходимость перехода на собственной шкуре. И на тех, кто еще не прошел стадию офигевания от собственной крутизны, и не набил достаточного количества шишек на своем собственном лбу. Но это проходит... за исключением клинических случаев.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[16]: Обучение программированию
От: ansi  
Дата: 10.03.05 09:41
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Есть такая шняга, через которые многие прошли, в том числе и я. Когда ты переходишь на ООП язык — это не просто введение новых терминов и синтаксиса. Это прежде всего — ломка мышления. Поэтому — чем быстрее человек войдет в него, тем легче пройдет этот процесс. К тому же, показ объявления переменной в терминах ООП, хорошо воспитывает чувство — где не стоит объявлять переменную в процедурном языке.

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

GZ>Грабли граблям рознь. Многие грабли, которые были 20 лет назад — совершенно не используются в наше время. За 20 лет наука программирования прошла значительно вперед. Сделаны многие шаги изменению ситуации. Так может не стоит возвращаться к старым граблям?

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

GZ>В данном топике, я увидел строго наоборот. Можно озаглавить. Нет NET.

Согласен. Хотя я лично ни коим образом не принимаю утверждения, что не надо преподавать его в ВУЗе, т.к. он коммерческий. И я совсем не против .НЕТа, а двумя руками за! Просто у некоторых это перерастает в фанатизм, а я как и прежде уверен, что под каждую задачу найдется своя платформа/компилятор/язык и не существует (во всяком случае пока) средства универсального.

A>>Что касается ассемблера, то ассемблер — это не язык программирования как таковой. Во всяком случае, не из этой серии. Это – архитектура. И учить ей надо, но уж никак не базировать на ней алгоритмы.

GZ>Не стоит учить архитектуру на ассемблере. Разве что некоторая видимая часть процессора. Вот как инструмент системного программирования, тогда да.
А на чем учить? Если рассматривать архитектуру именно процессора, то можно выделить два уровня: логический и физический. Вот логический как раз и изучается с помощью ассемблера. Разве нет?
Re[16]: Обучение программированию
От: ansi  
Дата: 10.03.05 09:41
Оценка: 24 (6)
Здравствуйте, Dog, Вы писали:

Dog>(хехе, какие эмоции, я уже вижу пену у рта)

Круто! А у меня нет зеркала рядом с компом

Dog>И в чём проблема ?

Dog>Ни кто и не говорил, что учим только шарп и всё.
А что потом?

Dog>[поток сознания пропущен]



A>>Ну, блин, вот почему-то очень часто встречаю перцев, которые ведут жесточайшую пропаганду этого самого .NET’а. Мол, нафига вам этот PHP – учите/пишите на ASP.NET. Зачем C++/Pascal, пиши на C#. Зачем учить народ C++, если за .NET’ом будущее.

Dog>Ни кто не противопоставляет шарп С++у , как первому языку обучения. Вы хоть читаете о чём речь идёт ?
Я понял о чем речь. C++ я упомянул просто как пример (можете вставить туда что-нибудь на ваш вкус ).

Dog>Давайте зададим вопрос в более простой форме. Зачем учить народ языку А, если за Б будущее?

A>> Теперь его суют в качестве первого языка для обучения... И т.д., и т.п. Типа, это панацея от всех бед. Чушь какая-то.
Dog>Придержите коней Тут речь идёт иммено о том можно ли использовать шарп в качестве первого языка обучения. Чем тот же паскаль + дельфи лучше шарпа ? Почему нельзя время потраченное на изучение этих языков потратить на изучение основ ООП и шарпа или той же java ?

Хорошо, допустим так — учим диезу или джаве. Ну а дальше? Хорошо, дальше учим плюсам. Тогда где выгода от того, что первым был диез, или джава? Ну да, теперь студень знает ООП, знает что такое GC... И вряд ли ему понравится, что в плюсах нужно самому все контролировать. Понимаете, так устроен человек, что ему психологически тяжело (не то, чтобы тяжело, лучше сказать непонятно) переходить от более легкого к более трудному, когда это более легкое полностью удовлетворяет его вкусы, потребности и задачи. И уж тем более, после диеза писать на турбопаскале будет отвратно. Это своего рода шаг назад, а двигаться вперед приятнее, не правда ли? Это касается не всех конечно, но подавляющего большинства. Допустим с треском, но научили мы его плюсам. Дальше? Боюсь, дальше времени не будет ни на один язык. Чем это плохо?
Чтобы дать ответ на этот вопрос, надо сначала понять саму цель образования. Поверьте, в универститете не учат си-плюс-плюсу, не учат джаве, или паскалю. Это очень невыгодно и неэффективно. В университете в первую очередь учат учиться. Потому как и плюсы и диезы умрут рано или поздно, появятся новые технологии, и что тогда делать человеку, если у него не вырабатано умение учиться? Итак, цель есть, осталось дело за малым — рассмотреть приемы и методы. Приведу два, на мой взгляд, главных:
Первое и наиболее очевидное требование — необходимо поощрять самостоятельную работу студней. Даже не просто поощрять, а настаивать на ней. Т.е. необходимо давать довольно поверхностную информацию по конкретному языку, но в полной мере давать практические задания на многие его возможности/особенности. Кажется немого жестким, но так должно делаться, и более того, так реально делается.
Второе, что необходимо делать — это производить частую, но, разумеется, в разумных пределах, смену языков. Или же их параллельную разработку. Ну, например, на практике по численным методам можно использовать уже освоенный язык, но поощрять использование нового, а на практике по структурам данных/алгоритмам новый уже безоговорочно требовать.
Следующей по важности целью является обучение студента алгоритмированию. Эта цель определяется специальностью, на которую учащийся поступил. Тут, очевидно, язык не важен, практически полная абстракция. Единственное требование — это соответствие возможностей языка поставленным задачам. Пишите хоть на языке, который называется "великий и могучий Русский язык", только вот компилятора для него еще не придумали и тестировать написанную программу вручную преподу врядли понравится.
Например, нам первый семестр читали паскаль и на практике мы делали всякие олимпиадные задачки, вычисляли факториал рекурсией и циклически, ну и прочее... Второй семестр нам читали C++ с одновременным введением в ООП на примере плюсов. В этом же семестре мы изучали алгоритмы с реализацией на паскале. Летняя практика делалась на JavaScript (делал Сапера с алгоритмом разгадывания, как они называли AI). Третий и четвертый семестр (2 курс) мы писали эти алгоритмы на С++ (хотя, скорее на простом C). На третьем курсе численные методы делались сначала на Дельфи (5 семестр), а потом на Java (6 семестр). Причем ни Дельфи, ни Джаву нам никто не читал. Ткнули носом в учебник и сказали читай... Дальше уже было по выбору — пиши на чем хочешь. Компилятор, например, я писал на C++. На третьем же курсе зачитали нам и функциональное программирование, и архитектуру. "Практика на ЭВМ" велась на ассемблере весь третий курс (писали дизассемблер на ассемблере ). .NET (именно .НЕТ, а не C#, т.к. сам c# можно освоить очень быстро, интерес же представляет сама платформа) шел факультативом все на том же третьем курсе (хотя приходили с 3-5 курсов).
Так что я не вижу никаких особых преимуществ ведения диеза первым языком, т.к. особой ценности без изучения .NET'а он из себя не представляет, а с .NET'ом малоподготовленного программиста придется учить дольше, чем он бы учился зная си/паскаль и уж тем более дольше, чем паскаль/си (а менять языки надо часто). Ценности не представляет, потому что это будет практически обычный си/си++, но тогда лучше с си и начать — пусть человек хоть с памятью поработает, посмотрит что да как и ему потом будет понятно, почему диез или джаву сделали управляемыми. То есть он как бы прослеживает эволюцию языков и понимает, что, почему и как было сделано в более новых языках.
Понятно, что весь спектр языков не охватить. И когда диез проживет достаточно долго, чтобы называться дедушкой, а остальные уйдут на покой (как, например, бэйсик в своей первоначальной форме) то он наверное и будет вводиться как первый язык, а пока не дорос еще.
Аргументы вроде того, что это современный язык и человек будет работать с ним в будущем, а остальные уходят в прошлое, не считаю весомыми, так как после двух/трех лет обучения в ВУЗе он осваивается на ура в кратчайшие сроки самостоятельно без каких-либо проблем, потому как преподаватели уже достигли своей цели в какой-то мере — научили человека учиться. И целью обучения, повторюсь, не является научить человка какому-то языку.
Резюмируя все вышенаписанное, приведу аргументы в пользу изучения языков от простых к более сложным (практически в хронологическом порядке):

1) Движение от простого к сложному наиболее понятно для человека, движение же в обратном порядке вызывает некий дискомфорт.

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

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

4) Хорошо прослеживается эволюция языков. Видны проблемы и способы их решения. История — важная наука.

5) В обоих случаях к концу обучения человек будет знать C# и .NET. Только в случае движения от простого к сложному он этим не ограничится. Более того, способность к самообучению у него будет выше, а это очень важное качество.

Жду весомых контраргументов/поправок.
Re[17]: Обучение программированию
От: Дарней Россия  
Дата: 10.03.05 10:52
Оценка:
Здравствуйте, ansi, Вы писали:

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


А зачем переходить, если его (и его начальство ) всё полностью удовлетворяет?

A>И уж тем более, после диеза писать на турбопаскале будет отвратно.


И правильно. И нефиг

A>1) Движение от простого к сложному наиболее понятно для человека, движение же в обратном порядке вызывает некий дискомфорт.


A>2) Такая последовательность позволяет менять языки довольно часто, так как знание более простого языка подразумевает знание большей части более сложного. Обратная же последовательность требует длительного изучения одного языка (своего рода застой).


A>3) Более простой язык легче изучается самостоятельно. Таким образом уровень спосбности к самообучению плавно растет вместе со сложностью изучаемых языков. Развивается способность быстро переключаться с одного языка на другой (т.е. фактически менять образ мышления). С нуля освоить самостоятельно более сложный язык подсилу далеку не каждому, потому человек будет чаще прибегать к помощи преподавателя, что не самым лучшим образом будет развивать его способности.


A>4) Хорошо прослеживается эволюция языков. Видны проблемы и способы их решения. История — важная наука.


У вас, товарищ, небольшая подмена понятий происходит. Простые в применении — это как раз современные языки, а сложные — это как раз языки старые. (надеюсь, никто не станет спорить, что C++ в применении сложнее C#, а assembler сложнее C++)
Если принять эту поправку, то я полностью согласен :-D
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[17]: Обучение программированию
От: Dog  
Дата: 10.03.05 10:57
Оценка:
A>>>Ну, блин, вот почему-то очень часто встречаю перцев, которые ведут жесточайшую пропаганду этого самого .NET’а. Мол, нафига вам этот PHP – учите/пишите на ASP.NET. Зачем C++/Pascal, пиши на C#. Зачем учить народ C++, если за .NET’ом будущее.
Dog>>Ни кто не противопоставляет шарп С++у , как первому языку обучения. Вы хоть читаете о чём речь идёт ?
A>Я понял о чем речь. C++ я упомянул просто как пример (можете вставить туда что-нибудь на ваш вкус ).
Это ваш пример

Dog>>Придержите коней Тут речь идёт иммено о том можно ли использовать шарп в качестве первого языка обучения. Чем тот же паскаль + дельфи лучше шарпа ? Почему нельзя время потраченное на изучение этих языков потратить на изучение основ ООП и шарпа или той же java ?

A>Хорошо, допустим так — учим диезу или джаве. Ну а дальше? Хорошо, дальше учим плюсам. Тогда где выгода от того, что первым был диез, или джава? Ну да, теперь студень знает ООП, знает что такое GC... И вряд ли ему понравится, что в плюсах нужно самому все контролировать. Понимаете, так устроен человек, что ему психологически тяжело (не то, чтобы тяжело, лучше сказать непонятно) переходить от более легкого к более трудному, когда это более легкое полностью удовлетворяет его вкусы, потребности и задачи.
Но ведь обучение как раз и идёт от простого к сложному.

A> И уж тем более, после диеза писать на турбопаскале будет отвратно.

А зачем ?

A>Это своего рода шаг назад, а двигаться вперед приятнее, не правда ли? Это касается не всех конечно, но подавляющего большинства. Допустим с треском, но научили мы его плюсам. Дальше? Боюсь, дальше времени не будет ни на один язык.

Изучение C++ ни как нельзя назвать шагом назад. Хорошо, давайте урежем изучение C++ на половину и вместо него впихнём пару языков. Каких? Что в результате получим? К 5-му курку студент не знает ни С++ и уже с успехом забыл всё остальное.

A> Чем это плохо?

A>Чтобы дать ответ на этот вопрос, надо сначала понять саму цель образования. Поверьте, в универститете не учат си-плюс-плюсу, не учат джаве, или паскалю. Это очень невыгодно и неэффективно. В университете в первую очередь учат учиться.
Хочется прослезиться. Приберегите эти красивые слова для того кто в них верит. Существующая система образования уж ни как не учит учится. Ни высшая ни уж тем более средняя. Хороший пример. Моя знакомая после института пошла получать второе образование в MBA. И была просто поражена той системой которая там существует. Что бы учить учится надо хотя бы что-то учить. А как учатся наши студенты. От сессии до сессии живут студенты весело. То обучение, которое даёт возможность подготовится к любому предмету за 3 дня и сдать его, ни как нельзя назвать хорошим.

A> Потому как и плюсы и диезы умрут рано или поздно, появятся новые технологии, и что тогда делать человеку, если у него не вырабатано умение учиться?

Вернитесь к реальности. Читайте выше.

A> Итак, цель есть, осталось дело за малым — рассмотреть приемы и методы. Приведу два, на мой взгляд, главных:

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

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

Мне это напоминает вот это. Вот вам ребята 7 нот, а завтра напишите мне сонату.

A>Второе, что необходимо делать — это производить частую, но, разумеется, в разумных пределах, смену языков. Или же их параллельную разработку. Ну, например, на практике по численным методам можно использовать уже освоенный язык, но поощрять использование нового, а на практике по структурам данных/алгоритмам новый уже безоговорочно требовать.

Что бы что-то требовать, для начала надо что-то дать

A>Следующей по важности целью является обучение студента алгоритмированию. Эта цель определяется специальностью, на которую учащийся поступил. Тут, очевидно, язык не важен, практически полная абстракция. Единственное требование — это соответствие возможностей языка поставленным задачам. Пишите хоть на языке, который называется "великий и могучий Русский язык", только вот компилятора для него еще не придумали и тестировать написанную программу вручную преподу врядли понравится.

Если язык не важен, то почему нельзя писать, на том с чем он столкнётся ? Зачем для этого учить лишние языки (фортраны, паскали) Не проще ли на основе применения этих алгоритмов заодно углубить свои познания в том же C# или Java ?

A>Например, нам первый семестр читали паскаль и на практике мы делали всякие олимпиадные задачки, вычисляли факториал рекурсией и циклически, ну и прочее...

Вы не смогли бы этого сделать на C# зная синтаксис в нужных вам пределах? Знание платформы тут не нужно.

A>Второй семестр нам читали C++ с одновременным введением в ООП на примере плюсов. В этом же семестре мы изучали алгоритмы с реализацией на паскале. Летняя практика делалась на JavaScript (делал Сапера с алгоритмом разгадывания, как они называли AI). Третий и четвертый семестр (2 курс) мы писали эти алгоритмы на С++ (хотя, скорее на простом C). На третьем курсе численные методы делались сначала на Дельфи (5 семестр), а потом на Java (6 семестр). Причем ни Дельфи, ни Джаву нам никто не читал. Ткнули носом в учебник и сказали читай... Дальше уже было по выбору — пиши на чем хочешь. Компилятор, например, я писал на C++. На третьем же курсе зачитали нам и функциональное программирование, и архитектуру. "Практика на ЭВМ" велась на ассемблере весь третий курс (писали дизассемблер на ассемблере ). .NET (именно .НЕТ, а не C#, т.к. сам c# можно освоить очень быстро, интерес же представляет сама платформа) шел факультативом все на том же третьем курсе (хотя приходили с 3-5 курсов).

А в результате ? С чем вы столкнулись ? Какая была ваша первая работа ?

A>Так что я не вижу никаких особых преимуществ ведения диеза первым языком, т.к. особой ценности без изучения .NET'а он из себя не представляет, а с .NET'ом малоподготовленного программиста придется учить дольше, чем он бы учился зная си/паскаль и уж тем более дольше, чем паскаль/си (а менять языки надо часто). Ценности не представляет, потому что это будет практически обычный си/си++,



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

Идите от простого к сложному.

A>Понятно, что весь спектр языков не охватить. И когда диез проживет достаточно долго, чтобы называться дедушкой, а остальные уйдут на покой (как, например, бэйсик в своей первоначальной форме) то он наверное и будет вводиться как первый язык, а пока не дорос еще.

Лишь потому что это дедушка ??? Его что будут преподавать как-то подругому ?

A>Аргументы вроде того, что это современный язык и человек будет работать с ним в будущем, а остальные уходят в прошлое, не считаю весомыми, так как после двух/трех лет обучения в ВУЗе он осваивается на ура в кратчайшие сроки самостоятельно без каких-либо проблем, потому как преподаватели уже достигли своей цели в какой-то мере — научили человека учиться. И целью обучения, повторюсь, не является научить человка какому-то языку.

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

A>Резюмируя все вышенаписанное, приведу аргументы в пользу изучения языков от простых к более сложным (практически в хронологическом порядке):

A>1) Движение от простого к сложному наиболее понятно для человека, движение же в обратном порядке вызывает некий дискомфорт.
C# -> C++ не вижу противоречий.

A>2) Такая последовательность позволяет менять языки довольно часто, так как знание более простого языка подразумевает знание большей части более сложного. Обратная же последовательность требует длительного изучения одного языка (своего рода застой).

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

A>3) Более простой язык легче изучается самостоятельно. Таким образом уровень спосбности к самообучению плавно растет вместе со сложностью изучаемых языков. Развивается способность быстро переключаться с одного языка на другой (т.е. фактически менять образ мышления).

Менять образ мышления вы будете перескакивая в C++ на Форт или на Асм. Но ни как не с паскаля на фортран или делфи.

A> С нуля освоить самостоятельно более сложный язык подсилу далеку не каждому, потому человек будет чаще прибегать к помощи преподавателя, что не самым лучшим образом будет развивать его способности.

Для чего вообще тогда нужны институты?

A>4) Хорошо прослеживается эволюция языков. Видны проблемы и способы их решения. История — важная наука.

A>5) В обоих случаях к концу обучения человек будет знать C# и .NET. Только в случае движения от простого к сложному он этим не ограничится. Более того, способность к самообучению у него будет выше, а это очень важное качество.
A>Жду весомых контраргументов/поправок.
Реальность такова.
1. Нас не учат учится.
2. Самообучение подразумевает наличие нейкой мотивации. А она как раз выше когда вы уже работаете. А в данным момент я не вижу никакой мотивации в изучении паскаля и т.д. , кроме того что бы просто сдать зачёт\экзамен.
3. Упор на изучение мэйнстрима (а это не только C# )даёт вам ощутимый стартап. После чего всё зависит от вас и вашего желания расширять свои знания.
4. Это не фанатизм — это реализм. И пока кроме пустых эмоций , ну и вашего письма я не вижу ничего.
Где-то между собакой и богом.
Re[18]: Обучение программированию
От: Dog  
Дата: 10.03.05 10:59
Оценка:
A>>4) Хорошо прослеживается эволюция языков. Видны проблемы и способы их решения. История — важная наука.
Д>У вас, товарищ, небольшая подмена понятий происходит. Простые в применении — это как раз современные языки, а сложные — это как раз языки старые. (надеюсь, никто не станет спорить, что C++ в применении сложнее C#, а assembler сложнее C++)
+1

Д>Если принять эту поправку, то я полностью согласен :-D

С чем? Что обучение программистов надо отдать на откуп самообучению ?
Где-то между собакой и богом.
Re[19]: Обучение программированию
От: Дарней Россия  
Дата: 10.03.05 11:38
Оценка: +1 -1
Здравствуйте, Dog, Вы писали:

Dog>С чем? Что обучение программистов надо отдать на откуп самообучению ?


С тем, что обучение должно идти от простого к сложному.
Иными словами — сначала C# или Ява, потом основы C++, потом C, а потом уже — трубо-паскаль или дельфи, если вдруг найдутся тонкие ценители извращений.
Параллельно — что-нибудь из функциональных языков. Только на примере современных средств, а не каких-нибудь допотопных монстров
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[18]: Обучение программированию
От: WFrag США  
Дата: 10.03.05 17:15
Оценка:
Здравствуйте, Дарней, Вы писали:

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


Scheme? 1975 год. Очень простой и естественный синтаксис.

Ну а вообще проще/сложнее — понятие субъективное.
RSDN@Home 1.1.4 beta 3 r297, играет silent
Re[13]: Обучение программированию
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.03.05 02:16
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Это с каких пор аннотация типов я вляется инструментом выработки стиля?

ANS>И вообще, вместо общих заявляний привёл бы пример какой. Стиля до и
ANS>стиля после.

С давних. Хотя конечно речь идет не об аннотации типов, а о статической типизации, что не совсем равнозначные понятия.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: Обучение программированию
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.03.05 02:16
Оценка: :))
Здравствуйте, Дарней, Вы писали:

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


Кстати, они (опооненты) на нашей стороне! Они же предлагают детишек сразу в темную комнату с граблаями. Тогда эти детишки все что нужно прочувствую в раз. Так сказать обучение палкой. Далее им останется только показать пряник.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Обучение программированию
От: Дарней Россия  
Дата: 11.03.05 04:20
Оценка:
Здравствуйте, WFrag, Вы писали:

WF>Scheme? 1975 год. Очень простой и естественный синтаксис.


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

WF>Ну а вообще проще/сложнее — понятие субъективное.


Его очень просто измерить — дать одну и ту же задачу двум группам, которые будут решать ее двумя разными инструментами.
Не вижу здесь ничего субъективного
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.