Re[5]: Перспективы технологии, сравнение с другими технологи
От: vdimas Россия  
Дата: 02.03.05 08:59
Оценка: 1 (1)
Здравствуйте, Interceptor, Вы писали:

I>Здравствуйте, <Аноним>, Вы писали:


А>>языки типа C# лучше давать после изучения основных принциповв программирования, курса с 3-го.А первые 2 года посвятить изучению теории программирования, алгоритмам

I>Объясните пожалуйста почему теорию программирования, алгоритмы мы не можем давать на C#???? Не привязываясь к классам.

В C# невозможно не привязываться к классам.
Далее, для понимания сути происходящего в C# надо четко понимать разницу между типами переменных ссылочного типа и "непосредственного". Синтаксис C# эти различия скрывает, что может привести новичков в замешательство.

А>>и структурамм данных и т.п.

I>Структуры данных наиболее просто и понятно реализованы ИМЕННО в С-подобных языках. Но никак не в Паскале.

Да, именно. Вот и берите С для всего первого курса. Этого достаточно. Почти всего Кнута можно пройти на С.
Четкая синтаксическая разница м/у указателями и простыми переменными поможет им легко понять принципы работы связанных структур данных, принципы динамического выделения и использования памяти.

Потом можно давать С++ и C#. Я бы давал их одновременно. Они оба скрывают многие процессы, явно обнажаемые на С, однако, если студент ЧЕТКО знает, что именно происходит, то это уже не вызовет затруднений.

Для примера. Моя программа 15-ти летней давности:
— 1-й курс, 1-е полугодие — Паскаль
— 1-й курс, 2-е полугодие — С, FORTRAN, ASM-360/390
— 2-й курс, 1-е полугодие — LISP, Prolog

ВСЕ! А специальность профилирующая по IT.

Все остальное время нам сами языки не преподавали, да это было бы и нелепо. Были просто лабы, курсовики и летние практики (1-1,5 месяца) на LISP, ASM-80, ASM-86, ASM-51, Pascal, C, FORTRAN, поже C++.
Просто берешь лабу или курсовик, а там в номере варианта не только задание, но и язык исполнения. (реже, когда — "выберите язык самостоятельно и обоснуйте выбор")

Все остальное время изучали принципы проектирования ПО, там дохрена и без языков, да и объем данных по конкретному языку не виден и под микроскопом по сравнению с объемом общетеоретических данных. Знание самих языков после второго курса НИКАК не рассматривалось и не оценивалось, это тоже было бы нелепо. (это важно, и Вы, преподаватели того ВУЗА могли бы ввести подобный "общественно-научный дух" и у себя )


А>>Начиная учить программирование с C#, имхо, ничего хорошего не выйдет!

I>Почему? Потому, что все так просто и потом им будет гораздо сложнее перейти на другие, более сложные языки?

Спецу все-равно, на какие языки переходить потом или не потом. Надо четко представлять, что именно происходит, тогда использование ЛЮБОГО языка будет адекватным.

Я именно потому и посоветовал начать с С, а потом одновременно начать изучение С++ и C#, чтобы люди воочио увидели разные (но похожие) пути по увеличению производительности программиста в виде ООП, динамической типизации и прочего синтаксического и концептуального сахара.

А>>З.Ы. Вирт и Кнут рулят!

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

Переучивать на языки никого не надо. Вы, уважаемый преподаватель, немного заблуждаетесь. Хороших программистов всегда выходит менее половины потока. Но именно они в будущем будут писать реальные программы и системы, оправдывая сам факт Вашего существования. На них и стоит ориентироваться. Тут банальный эффект привычки. Мне приходится постоянно прыгать м/у несколькими языками, почти любому профессионалу приходится делать тоже самое. Первые дни(или часы, смотря что на что поменял) "привыкаешь", вернее настраиваешься на идеологию текущего инструмента. В процессе обучения я бы устраивал студентом такое постоянно в перманентном режиме. ибо учить только лишь какому-то конкретному языку — это бред. Ставить задачу ВУЗа как обучение языкам — продолжение этого бреда. Все языки временны, и будущие еще не изобретенные — аналогично. А способность осваивать новое остается. Уточняя применительно к реалият IT — это "новое" ПОЧТИ ВСЕГДА лишь новая форма хорошо известного "старого". Теория ПО должна быть для выпускника ВУЗа "хорошо известным старым".


P.S.
Как-то так вышло, что коллеги моего поколения реально владеют очень многими языками (хоть используют в последние годы немногие из них). Споры насчет ЯЗЫКОВ я более наблюдаю у молодого поколения или у программистов, кои первоначально получили непрофильное образование. Среди того круга, в котором я учился я не помню ни одного подобного спора. Все владели целым набором: С/С++/Паскаль/FORTRAN/LISP/BASIC/(много асмов). Сам регулярно сидел на Паскале/С++/Forth-е, смотря что делать надо было (для нелюбителей Паскаля — 1989-1992-й года, XT-86, Паскаль компилил несколько секунд, С++ — несколько минут, Forth — мгновенно, ассемблер x51 на Forth занял 600 строк и 3 дня работы). Так что не помню подобные споры и все тут. Тут на форуме когда ввязываюсь в обсуждения X vs Y, в основном занимаю позицию противоположную каким-либо "крайним" взглядам. То отстаиваю VB, то С++, то C#.

(как в тех лабах: "выберите язык самостоятельно и обоснуйте выбор" )
Re[10]: Перспективы технологии, сравнение с другими технолог
От: DJ KARIES Россия  
Дата: 04.03.05 15:42
Оценка:
Здравствуйте, GlebZ, Вы писали:

C>>Они не страшные, а неудобные — жутко много получается абсолютно ненужной

C>>писанины. Самое отстойное:
C>>"if something then begin ... end;" — намного проигрывает "if () {...}".

GZ>Ни фига ничего отстойного здесь нет. Я пишу эти строки на C++ и Delphi практически с одинаковой скоростью. Значительно больше времени уходит на то, что я решаю что здесь должен быть именно if а не что-то другое. Сравнивание begin end и {} яйца выеденного не стоит. Специально для тебя :

GZ>if something then
GZ>begin
GZ>end;

GZ>if something then

GZ>begin
GZ>end;

GZ>if somthing then

GZ>begin
GZ>end;

GZ>if something then

GZ>begin
GZ>end;

GZ>if something then

GZ>begin
GZ>end;

GZ>if something then

GZ>begin
GZ>end;
GZ>за 37 секунд


GZ>if (something)

GZ>{
GZ>}

GZ>if (something)

GZ>{
GZ>}

GZ>if (something)

GZ>{
GZ>}

GZ>if (something)

GZ>{
GZ>}

GZ>if (something)

GZ>{
GZ>}

GZ>за 33 секунды


Блин, а не проще ли за 5 сек через Ctrl+C/Ctrl+v (Ctrl+Ins/Shift+Ins)?

GZ>Самое сложное слово something — поскольку после того как несколько тысяч(а может миллионов) раз наберешь begin или еnd, то скорость набора слова стремится к скорости набора одного символа. А слово something пишешь значительно реже. Еще на пару секунд была задержка в С из-за неправильно набранной скобки (обычно я заметил ставлю сначало скобки, а потом вставляю нужное значение.


Кстати, все эти бегины и энды НЕ ТРЕБУЮТ одновременного нажатия БОЛЕЕ ОДНОЙ клавиши.
А фигурные скобки "{" и "}" ТРУБУЮТ одновременного нажатия SHIFT и {/}.
Причём сначала надо нажать SHIFT, и не отпуская его, нажать скобку.
Т.е. ДВА НАЖАТИЯ КЛАВИШЕЙ на скобку.

Соглавитесь, настрочить тот же бегин можно за 0.5 сек, работая 2 руками.
За те же 0.5 сек можно набрать ту же фигурную скобку, напрягая себя одновременным нажатием двух клавиш.


Но даже такие мелочи сглаживаются современными IDE.
... << http://dkdens.narod.ru :: http://retroforth.org >>
Re[11]: Перспективы технологии, сравнение с другими технолог
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.03.05 04:09
Оценка:
Здравствуйте, DJ KARIES, Вы писали:

DK>Кстати, все эти бегины и энды НЕ ТРЕБУЮТ одновременного нажатия БОЛЕЕ ОДНОЙ клавиши.

DK>А фигурные скобки "{" и "}" ТРУБУЮТ одновременного нажатия SHIFT и {/}.
DK>Причём сначала надо нажать SHIFT, и не отпуская его, нажать скобку.
DK>Т.е. ДВА НАЖАТИЯ КЛАВИШЕЙ на скобку.

Ради хомхмы обрати внимание на то, что шифтов у тебя на клавиатуре два. Можешь на досуге потренироваться наживать левый шифт леовой рукой и } правой. Обычно после недели тренировки получается.

DK>Но даже такие мелочи сглаживаются современными IDE.


Вот именно. Я чтобы набить if ввожу "if" и жму Tab. Сразу создаются и (), и {}, и курсор еще ставится куда нужно.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.