LINUX.ORG.RU

Переиздание книг Столярова по программированию

 


9

4

Скандально известный на ЛОРе Андрей Викторович Столяров выпустил новое издание своего учебного пособия «Программирование: введение в профессию» и обновил PDF-версии:
«Азы программирования»
«Системы и сети»
«Парадигмы»
В новом издании 4-томник стал 3-томником.

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

>>> Сайт автора

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Zhbert (всего исправлений: 3)

Ответ на: комментарий от drfaust
#include        <iostream>                                                                                              
                                                                                                                        
int     main(void)                                                                                                      
{
        int fill(), init();
        return  fill() , init();
}

int  fill()
{
        char values[]{ "ZeroInitialized" "\n"};
        std:: cout << values;
        return values[0];
}

int init()
{                                                                                                                       
    int i;                                                                                                              
                                                                                                                        
    std::cout<<i <<'\n';                                                                                                
                                                                                                                        
    return 0;
}
$t;t;t
ZeroInitialized
22676344
ZeroInitialized
-2089486392
ZeroInitialized
222354025
vM ★★
()
Ответ на: комментарий от zabbal

скучной императивной парадигме

Его диалекты с 1986-1989 годов поддерживают возможности ООП.

И Embarcadero не похоже, что бедствует, не?

без интересных возможностей

Возможность разработки под несколько платформ, включая мобильные не выглядит неинтересной.

grem ★★★★★
()
Ответ на: комментарий от liksys

Сейчас на нем поддерживают только бородатое легаси.

Бородатое легаси тоже кто-то должен поддерживать. А значит Паскаль кое-где всё ещё нужен.

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

Именно поэтому давайте сразу древнее говно изучать

Нет. Это значит, что современность и свежесть языка не так уж и важна. Конечно, при прочих равных лучше выбирать популярное и поддерживаемое, а не наоборот. Но только при прочих равных и никак иначе. Потому что ВУЗ — это не курсы макако-программиста за 21 день.

У него будет опыт по алгоритмам, а не по выискиванию сишных проблем. Он вообще понятия не будет иметь, что такие проблемы в могут существовать.

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

Во-вторых, он к этому времени уже освоит парадигму процедурного программирования и какие-то основные алгоритмы. Так что на Си ему придётся осваивать не всё сразу, а только сишный синтаксис с его граблями и подводными камнями, что проще. В результате и то, и другое он освоит лучше. Потому что по порядку, от простого к сложному, осваивается быстрее и эффективнее, чем всё сразу.

Надо грамотно составить учебную программу, объяснить, как хранятся в памяти данные, последовательно привязывать к этому алгоритмы и все будет хорошо.

Всё то же самое можно объяснить и на Паскале, потому что там тоже есть ссылки и массивы. Но там, как я говорил, работа с ними более безопасна, потому что многое отлавливается компилятором или генерируемым кодом, и можно сосредоточиться на более общих вещах. А вот потом уже переходить к Си и ассемблеру. А хорошо первое время всё равно не будет, как ни объясняй.

например питон. Обучение алгоритмам - чек. Основы ООП - чек. Отсутсвие проблем с ручным управлением памятью - чек. Описывай алгоритмы - не хочу.

Вот нет там никаких чеков:

  1. Язык без строгой типизации, что уже плохо для обучения.

  2. ООП надо давать на втором этапе, а не с самого начала. Поэтому в качестве 1-ого языка это тоже плохо.

  3. Отсутствие возможности управлять памятью — для обучения тоже минус. Да, не нужно сразу погружать новичка в ад и хаос, но всё-таки программирование должно быть программированием с самого начала. И даваться должно как минимум большинство концепций.

  4. Многие алгоритмы из-за отсутствия ссылок невозможно реализовать. Например, как реализовать на Питоне список? Не взять уже готовый, а создать самостоятельно? А ведь это азы.

aureliano15 ★★
()
Ответ на: комментарий от anonymous

кандидаты наук могут упасть от смеха, читая каменты Шамана

А молодые училки русского языка родить раньше срока.

Вот не надо клеветать на наших училок. Если уж они рожают, то точно в срок и исключительно здоровых младенцев.

aureliano15 ★★
()
Ответ на: комментарий от grem

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

Кстати, да! Такая обфускация текста только в помощь плагиаторам, потому что не позволяет применить эти давно налаженные алгоритмы. @gns, на заметку!

aureliano15 ★★
()
Ответ на: комментарий от drfaust

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

Процитирую свой ответ на аналогичное замечание @liksys:

Нет. Это значит, что современность и свежесть языка не так уж и важна. Конечно, при прочих равных лучше выбирать популярное и поддерживаемое, а не наоборот. Но только при прочих равных и никак иначе. Потому что ВУЗ — это не курсы макако-программиста за 21 день.

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

Это всё очень хорошо за одним существенным упущением: все языки всё равно не выучишь; что проживёт много лет, а что умрёт завтра — не угадаешь; ну и тем более не угадаешь, на чём придётся работать. А вот парадигм программирования не так много. На них-то, а также на алгоритмах и стоит сосредоточиться. А выучить ещё один язык — дело нехитрое.

Преподавателю, который учит использовать scanf, вместо scanf_s

Ну, учить надо всему, хотя бы для того, чтобы читать старый код. А вводить можно по-разному. Я предпочитаю fgets, а scanf написал, потому что это наиболее типичный способ для первокурсников, судя по выкладываемому ими коду на pastebin. Но проблема в данном коде не в этом. Каким способом ни вводи, а ошибка останется.

Придёт понимание как хранится «символ» в компе, заодно узнает что такое ASCII-таблица. Если же ему рано ещё знать эти премудрости - пусть использует atoi(), и на этом этапе использовать (‘2’-‘0’) == 2 - зло. Просто не надо нагружать тем, чего он ещё не знает. Сначала должно придти понимание кодировок (866, koi-8 и т.п.) и только потом пусть использует этот трюк

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

По себе скажу - переучиваться студенту очень сложно. Пишешь на Си, в башке алгоритм рисуется, пальцы на клаве автоматом вбиваюn begin-end.

Вы же только что сами топили за изучение туевой кучи языков, а теперь очень сложно! Да ещё и студенту. А что такой выпускник будет делать в 40 лет, когда его питончик сдуется, если ему уже в 20 лет выучить более 1 языка сложно?

Такая же проблема и при переходе с процедурного на ООП - многие так и не осилили

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

так где проще, быстрее и эффективнее сделать через ООП - долбят в С++ обычным процедурным…

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

aureliano15 ★★
()
Ответ на: комментарий от grem

Много ты людей лично знаешь, которые используют чистый Си?

Прорву просто! Более того, на нём даже написан проект в честь которого назван данный форум.

Лично? Вот прям живьём видел?

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

aureliano15 ★★
()
Ответ на: комментарий от vM

Да, вы правы. Всё ещё не привыкну. Базовые типы в С++ не инициализируются.

Но тем не менее Си и С++ совсем разные языки, особенно на нижнем уровне.

З.Ы. почему топлю за Си - да потому что этот язык редко меняется и программу обучения можно построить на стандарте С89 или С99 - это уже препод решать будет - независимо от плюшек/закидонов конкретного компилятора.

drfaust ★★★★★
()
Ответ на: комментарий от grem

:D иногда и такое, а чаще «бум-бум» в башке от шагов лаборанта ;)

drfaust ★★★★★
()
Ответ на: комментарий от liksys

Хотя это неявно уже писалось, но, похоже, никак не доходит до разума «паскаль-вон-из-образования».

Никто не учит сначала Паскалю или даже программированию, учат АЛГОРИТМЫ и СТРУКТУРЫ ДАННЫХ, используя ЯП, который можно бесплатно в любом компе.

Давайте посмотрим, а что для этого можно использовать?

Для чего создавался С? Для переноса игрушки с одного компа на другой.

Для чего создавался Python, C++, Java, Lua, Rast, Go, FORTRAN и т.д.? Для решения той или иной задачи, НЕ ИМЕЮЩЕЙ ОТНОШЕНИЯ к преподаванию.

Для чего создавался Pascal? Для ОБУЧЕНИЯ. Изначально у него даже компилятора не было. Так что вы там хотите предложить завместо инструмента, СПЕЦИАЛЬНО созданного для обучения?

Чтобы объяснить «рецепт магии» Паскаля, хватит 45 минут, после чего можно приступать к обучению алгоритмам и структурам данных, делая иллюстрации на Паскале с минимальными пояснениями «что такое := и чем оное отличается от =».

Для того, чтобы объяснить «магию» «Здравствуй, имярек», реализованную на Cи или Java, потребуется полноценный курс именно Cи или Java.

P.S. scanf("%s", &y); – ну сразу понятно, зачем амперсанд перед именем переменной! Особенно после пояснения, что он используется для формирования адреса переменной. И обязательно не забыть, что в начале проги надо написать заклинание #define _CRT_SECURE_NO_WARNINGS, иначе ничего работать не будет.

mister_VA ★★
()
Ответ на: комментарий от drfaust

Си — худший язык для обучения программированию. Слишком низкоуровневый. Слишком старый. Да, как он занял полвека назад свою нишу «переносимого ассемблера», так никого в неё и не пускает, но бал правят сейчас, всё таки, языки существенно более высокого уровня и совсем других парадигм.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от aureliano15

все цифры, как и латинские буквы для шестнадцатеричного представления, во всех кодировках одинаковы.

Не во всех, но трюк '2' - '0' обычно работает.

vM ★★
()
Ответ на: комментарий от aureliano15

то проживёт много лет, а что умрёт завтра — не угадаешь; ну и тем более не угадаешь, на чём придётся работать.

Думаю, что программа обучения сейчас намного насыщеннее, чем в мои 90е, судя по детям/племянникам в школе, а время, часы остаются. Тем более «нулёвому» подавану сначала надо объяснять синтаксис «мерветчины», а затем синтаксис Си, лучше сэкономить эти 20 часов и сразу обучить синтаксису Си, пропустив «мёртвый язык» - тем более при грамотно устроенной программе «граблей Си» студенты избегут на 90%, а потом плавно погрузятся «в дебри».

А выучить ещё один язык — дело нехитрое.

На третьем курсе уже да, а на первом-втором, когда тебя грузят в основном матаном и физикой, дабы подтянуть «школьный» уровень до институтского?

И не трюк, а перевод строки в число, что является азами и необходимо уметь делать.

До этого надо убедиться, что у людей есть вообще понимание байта, слова, таблиц кодировок и т.п.

. А проблема как раз в тихом затирании другой переменной из-за ошибки выхода за границу массива.

Хм. Проморгал, что там был strcpy, но тут возвращаемся к deprecated - функциям, о которых не стоит рассказывать студентам - основывайтесь на актуальных языках/версиях/стандартах на первых курсах:

This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

Вы же только что сами топили за изучение туевой кучи языков, а теперь очень сложно!

А до конца дочитать фразу? Я говорю о том, что ненужно учить «мертвечину» - отнимает время у студентов, и в качестве примера показал, что ещё и нервы в режиме 90минутного цейтнота

И этому надо учиться в вузе.

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

А на один раз и проще, и надёжнее написать обычный процедурный код, вызывающий готовые библиотеки классов. Что многие и делают.

И при этом не в полной мере получаю навыки/знания/умение_думать в парадигме ООП. В работе же - зачастую купаешься в Qt/Builder и там всё ООПшное скрыто - хватает процедурного, но стоит вылезти за пределы Button->OnClick и столкнуться с четм-то серъёзнее - тут как раз ООП во всей красе (а работу-то делать надо, а не вспоминать что там за friend такой)

drfaust ★★★★★
()
Ответ на: комментарий от grem

Вопрос был в том, что продвигался тезис «самым основам нужно учить на базе востребованного языка»

Ну вот и спроси того, кто это продвигал. Я-то здесь при чём? :)

zabbal ★★★★★
()
Ответ на: комментарий от grem

с 1986-1989 годов поддерживают возможности ООП

И? Ты считаешь что это делает паскаль декларативным? Или ты не знаешь что значит «императивный»?

И Embarcadero не похоже, что бедствует

Рад за них. Кто это, кстати, и как они относятся к данному треду?

Возможность разработки под несколько платформ, включая мобильные не выглядит неинтересной

Выглядит. Сейчас сложнее найти язык, где таких возможностей нет.

zabbal ★★★★★
()
Ответ на: комментарий от mister_VA

Никто не учит сначала Паскалю или даже программированию, учат АЛГОРИТМЫ и СТРУКТУРЫ ДАННЫХ, используя ЯП, который можно бесплатно в любом компе.

Ну тогда начинаем с Лого и Scrath`а

Вот только Сишке всё-одно придётся учить (про АСМ молчу - он на средних курсах должен быть), т.к. курс СПО - драйвер под винду - классическая лаба курса.

Для чего создавался Pascal? Для ОБУЧЕНИЯ.

Увы, он даже пром масштабов достиг, но погиб…

Для того, чтобы объяснить «магию» «Здравствуй, имярек», реализованную на Cи или Java, потребуется полноценный курс именно Cи или Java.

Ложь. В Си можно очень просто войти не заморачиваясь. Более того, преподы могут нарисовать либы/макросы, что бы обойти scanf`ы и адресацию на первых этапах. Зато на втором курсе не придётся объяснять почему в паскале строки ограничены в 255 символов «исторически», а по стандарту Си символ (char) может иметь любое кол-во бит.

drfaust ★★★★★
()
Ответ на: комментарий от grem

И Embarcadero не похоже, что бедствует, не?

Есть статистика использования в ихней RAD Studio «Delphi» vs «Builder» за последние лет 10?

drfaust ★★★★★
()
Ответ на: комментарий от zabbal

Рад за них. Кто это, кстати, и как они относятся к данному треду?

Единственный из крупных, кто пользует паскаль. Наследник Борланда. Продают(в честь дня рождения скидка до 8 марта 2021 от 142 967 ₽ :))))) ) RAD Studio, которая включает Delphi(pascal) и, внезапно, Builder(C++). Если зарегиться, то для некоммерческого можно бесплатно скачать и установить либо Delphi, либо Builder, вместе нельзя. Ну или месячная триалка - вполне можно успеть накомпилировать паскалевские компоненты для билдера…

drfaust ★★★★★
()
Последнее исправление: drfaust (всего исправлений: 3)
Ответ на: комментарий от drfaust

Ложь. В Си можно очень просто войти не заморачиваясь.

Войти кому?

До этого надо убедиться, что у людей есть вообще понимание байта, слова, таблиц кодировок и т.п.

Подобным? Их 80% в среднем на первом курсе ( Тех кто этого не знает), если не больше по стране.

Кто-то конечно и на Си научится, кто спорит? В действительности большая часть просто забъёт, так и получаем «Диплом есть, знаний нет».

Есть объективная картина, с появлением всяких джав, питонов, бейсиков и тд - программистов становилось всё больше, так как на этапе изучения всё попроще.

Как уже сказали выше, один простой пример с выводом строки на Си это сразу объяснение, что такое функция, что там за плейсхолдеры, директива препроцессора.

Если человек кроме слов «папка» и " проводник" ничего не видел, всё обучение закончится ещё не начавшись.

shpinog ★★★
()
Последнее исправление: shpinog (всего исправлений: 1)
Ответ на: комментарий от shpinog

Войти кому?

Абстрактному первокурснику, который не знает ЯП вообще в Си, а не то что вы подумали…

Как уже сказали выше, один простой пример с выводом строки на Си это сразу объяснение, что такое функция, что там за плейсхолдеры, директива препроцессора.

Если человек кроме слов «папка» и " проводник" ничего не видел, всё обучение закончится ещё не начавшись.

Я в 94м, когда поступил имел представление о бейсике и «черепашке», об организации компьютера внутри весма смутно, не знал что такое дискета и как её вставлять в дисковод. Это что-то изменило? В 25 лет в Беларуси выехал в РФ в звании ведущий инженер. 17 лет паяльника(ремонт). Сейчас снова ведущий инженер. Надо убирать нафиг это ЕГЭ и возвращать старую советскую систему. ВУЗы против ЕГЭ, устраивают свои экзамены, т.к. галки ставить - одно, а иметь понятие - другое. Программы перегружены, везде, всяким хламом. Одним из хламов является паскаль.

Всё зависит от родителей,мозгов,склада_ума(в школе на литературе я больше 4х строк стишок не мог сложить),упорства, и о-о-очень многое зависит от преподавателей. Даже барана можно обучить.

З.Ы. У нас, в конторе, с год висела вакансия «слесарь КИПиА» - я туда и шёл, собственно, но отправили «инженером АСУ». Знаете сколько народу к нам приходило и дальше собеседования не прошло? - по одному в неделю. Отсеиваются на вопросах: «нарисуй и объясни закон Ома», «в чём измеряется давление», «какие физические принципы измерения температуры/давления» и т.п. - все с корками. Один на вопрос по единицам давления ответил «измеряются в миллиамперах», уточнили, ради прикола, «а в каком диапазоне»? - ответ «4-20ма». Год в Лукойле КИПовцем проработал, единиц давления не знает, зато знает пром-стандарт токового интерфейса датчика (0-20 или 4-20 на вкус и цвет). Вот нафига такие «спецы», которые даже школьную физику не знают?

drfaust ★★★★★
()
Последнее исправление: drfaust (всего исправлений: 2)
Ответ на: комментарий от gremlin_the_red

Си — худший язык для обучения программированию.

Просто преподаватели не умеют его готовить, если вообще сами его знают.

drfaust ★★★★★
()
Ответ на: комментарий от shpinog

Есть объективная картина, с появлением всяких джав, питонов, бейсиков и тд - программистов становилось всё больше, так как на этапе изучения всё попроще.

то ненастоящие программисты

Harald ★★★★★
()
Ответ на: комментарий от vM

все цифры, как и латинские буквы для шестнадцатеричного представления, во всех кодировках одинаковы.

Не во всех,

Ну, скажем так: во всех кроме каких-то совсем уж архаичных 7-битных и не ascii (типа koi7). В utf-16 и utf-32 у цифр и латинских букв может быть другой размер, но принципиально это в данном случае ничего не меняет.

но трюк ‘2’ - ‘0’ обычно работает.

«Обычно» — это значит, что не всегда? Разве есть кодировки (пусть даже очень редкие), где между символами ‘0’ и ‘2’ нет ‘1’ или помимо ‘1’ что-то ещё, или они расположены наоборот, и ‘2’ < ‘0’? Потому только в таких случаях ‘2’ - ‘0’ != 2.

aureliano15 ★★
()
Ответ на: комментарий от drfaust

Проморгал, что там был strcpy, но тут возвращаемся к deprecated - функциям, о которых не стоит рассказывать студентам - основывайтесь на актуальных языках/версиях/стандартах на первых курсах

Но это же убережёт от отдельных ошибок, но не решит проблемы в целом. Потому что дело не в функциях, а в языке. Я могу предложить другой пример без опасных функций:

#include <stdio.h>

int coefficients[]={10, 10, 10, 10}, err=1;

int main()
{
  int value=0, i;
  for(i=0; i<=sizeof(coefficients)/sizeof(int); ++i)
    value+=coefficients[i];
  value+=err;
  printf("Value is %i\n", value);
  return 0;
}

Программа рассчитывает некое значение value, которое зависит от 4 коэффициентов coefficients[] и систематической ошибки err. Результат должен быть равен 41, но за счёт по ошибке поставленного <= вместо < в цикле по i, что тоже типично для новичков в Си, — ошибка err добавляется дважды, и в результате получается 42. Этот результат очень похож на правду и поэтому может не перепроверяться ни студентом, ни преподом. Т. о. студент получит за свою лабу 5, ничему не научившись (точнее, научившись писать неправильно).

И таких примеров можно привести сколько угодно. Я придумываю самое простое и очевидное, что приходит в голову.

лучше сэкономить эти 20 часов и сразу обучить синтаксису Си

Думаете, сэкономив 20 часов на изучении синтаксиса и стандартной библиотеки Паскаля, вы не потеряете намного больше на ошибках типа тех, что я приводил?

aureliano15 ★★
()
Ответ на: комментарий от aureliano15

а вы думаете, что при изучении в последующем Си студент не потеряет ещё больше часов - в Си и Си++ нумерация массива от 0, а в паскале от 1?

К тому же речь идёт об академ-часах, а не о личном времени студента. Если сразу на Си - сэкономится и то и другое - он сразу привыкнет к «от 0 до n-1»

drfaust ★★★★★
()
Ответ на: комментарий от vM

все цифры, как и латинские буквы для шестнадцатеричного представления, во всех кодировках одинаковы.

Не во всех, но трюк '2' - '0' обычно работает.

'2' - '0' это не трюк и по стандарту '2' - '0' гарантировано равно 2.

utf8nowhere ★★★
()
Ответ на: комментарий от drfaust

В Си - получим бред, т.к. нет автоматической инициализации i нулём, Си++ инициализирует i в 0

Разупорись.

utf8nowhere ★★★
()
Ответ на: комментарий от drfaust

Я в 94м, когда поступил имел представление о бейсике и «черепашке», об организации компьютера внутри весма смутно

А сколько ещё с твоего класса? Вот и оно, это исключение и личный опыт которые ты проецируешь на массы.

Надо убирать нафиг это ЕГЭ и возвращать старую советскую систему.

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

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

ВУЗы против ЕГЭ, устраивают свои экзамены, т.к. галки ставить - одно, а иметь понятие - другое.

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

Всё зависит от родителей,мозгов,склада_ума(в школе на литературе я больше 4х строк стишок не мог сложить),упорства, и о-о-очень многое зависит от преподавателей. Даже барана можно обучить.

Всё это верно, и в то же время зависит от более глобальных вещей.

Достаточно прочитать большинство местных тем на лоре, в большинстве ты увидишь аргументацию вида «Востребовано\нет», сколько платят, плевки друг другу в рожу и другие увеселения.

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

Вот вы все обсираете паскаль, а у того же abc.pascal довольно большое сообщество и много пользователей, и большинство из них как раз начинающие. По вашему их силой туда загоняют? Нет, им просто интересно, возможно даже нравится.

И уж точно они знают о существовании Си, следовательно это их осознанный выбор, но педагогам с лора же виднее что удобнее?

shpinog ★★★
()
Последнее исправление: shpinog (всего исправлений: 1)
Ответ на: комментарий от drfaust

в Си и Си++ нумерация массива от 0, а в паскале от 1

Вообще-то, с любого целого:

   mas = array[10..15, 1..4] of integer;

Да, это нужно очень не всегда, но когда нужно — весьма удобно.

hobbit ★★★★★
()
Ответ на: комментарий от drfaust

RAD Studio, которая включает Delphi(pascal) и, внезапно, Builder(C++)

У меня чуть штаны не подвернулись :-D

С другой стороны кто-то же покупает кассеты и винил? Может и на это старьё желающие найдутся.

zabbal ★★★★★
()
Ответ на: комментарий от zabbal

старьё??? я год назад 10.2 поставил - сейчас уже 10.4. Они живут и процветают в своей нише. После древнего Билдер-6 я не узнал Билдер из RAD Studio Tokyo-общее осталось, остальное новое. Компилер С++11 поддерживает(в какой степени - х.з. т.к. мои мозги пока его ещё не поддерживают)

drfaust ★★★★★
()
Ответ на: комментарий от drfaust

Компилер С++11 поддерживает(в какой степени - х.з.

Они используют Clang, спасибо BSD-лицензии позволяющей проприетарить код. Так что C++11 поддерживается в соответствие с той, уже достаточно древней, версией Clang-а, которую они схомячили.

utf8nowhere ★★★
()
Последнее исправление: utf8nowhere (всего исправлений: 1)
Ответ на: комментарий от gremlin_the_red

Приведу аналогию: Изучение электроники. Можно начать преподавать теорию: «транзисторный мультивибратор» и закреплять знания практикой на пластиковой макетке с готовыми отверстиями и реальными транзисторами, перемычками (Паскаль), а можно сразу дать разведённую плату и паяльник в руки(Си). Или же потом, на втором курсе учить их держать паяльник?

Да - будут обжигаться, будут в лоб ловить капли припоя - но уже с первого курса научатся держать «инструмент» в руках, знать для чего канифоль/флюс. В жизни им никто не будет давать макетки - сразу посадят за паяльную станцию - вот тут «тяжёлый первый год» и пригодится.

drfaust ★★★★★
()
Ответ на: комментарий от utf8nowhere

clang - спасибо - не знал. Думал по прежнему тащат свой bcc.

Ну с их стороны это логично - выбрали достаточно перспективный инструмент, с gcc - видать не срослось, хотя они могли бы его использовать - как никак отдельный продукт и намертво пришивать к своему проекту его не надо - вроде GPL v3 не запрещает его использовать из командной строки в сторонних проектах…

drfaust ★★★★★
()
Ответ на: комментарий от drfaust

Если сразу на Си - сэкономится и то и другое - он сразу привыкнет к «от 0 до n-1»

Похоже, до пациентов не доходит. Учат НЕ Паскалю, учат АЛГОРИТМАМ и структурам данных. На Си надо УЧИТЬ СИ. Вы разумеете разницу между «учить языку программирования» и «учить программировать упитанных чайников»?

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

Вы хоть представляете себе, сколько учащихся не могут уразуметь разницу между read и write? Да, они, панимаишь, считают, что команда write – для пользователя. А вы с ходу хотите их путать scanf, scanf_s и пр. десятками функций?!

mister_VA ★★
()
Ответ на: комментарий от drfaust

вроде GPL v3 не запрещает его использовать из командной строки в сторонних проектах

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

zabbal ★★★★★
()
Ответ на: комментарий от grem

Много ты людей лично знаешь, которые используют чистый Си?

Я использую! а С++ нет, и вообще ООП не знаю. Не ради холивара, просто к слову.

Зачем студентам учить ООП? Все эти шаблоны итераторы и прочее. Проще же чистый Си.

zer0cat
()
Последнее исправление: zer0cat (всего исправлений: 1)
Ответ на: комментарий от mister_VA

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

Чё это за алгоритмы такие где не нужны указатели?

utf8nowhere ★★★
()
Ответ на: комментарий от drfaust

В Си можно очень просто войти не заморачиваясь.

Нельзя. В Си заморачиваются даже опытные программисты.

Более того, преподы могут нарисовать либы/макросы, что бы обойти scanf`ы и адресацию на первых этапах.

Т.е. сделать этакий… Паскаль. Зачем? Да и макросы объяснять и препроцессорную обработку… Зачем, если стоит задача объяснить, что такое цикл, чем цикл с пред условием отличается от пост? Что такое ветвление, зачем нужны процедуры и функции, в чём разница между глобальными и локальными переменными.

Если давать сразу Си, слишком многие решать побаловаться его «магией» и начнут отстреливать себе яйца с помощью int a=b=c=e<d=2

mister_VA ★★
()
Ответ на: комментарий от Vudod

После критики первого издания автор второе на ЛОРе выкладывать не стал, так как осознал, что это не его целевая аудитория.

Автор «не стал», потому что опоздал. Когда я сюда пришёл, тут уже вовсю проходил фестиваль по высшему пилотажу на анально-реактивной тяге. Участники, впрочем, в первый день все сдулись, кроме одного.

«Осознал»… «аудитория»… отучаемся предположения выдавать за факты, особенно предположения такого рода.

Кстати, вот что интересно – судя по всему, ни один из участников дискуссии (причём ни с той, ни с другой стороны) не прочитал тот параграф в книжке, где я объясняю, как конкретно Си первым языком уродует мышление (причём необратимо) и таки зачем нужен Паскаль, окромя постепенного изучения указателей (для этого тоже нужен, но не только и даже не в первую очередь). Если что, в первом издании это том 4, стр.69, во втором – том 3, стр.68. Но вы продолжайте, продолжайте рассказывать, как Паскаль не нужен, ваше мнение очень важно, ага. Учитывая, что я двадцать лет (вот уже на 21й пошёл) ежегодно учу студентов именно что этой вашей сишечке, в основном, конечно, на втором курсе и при наличии паскалевской базы, но случается всякое, и частные уроки, например, в том числе со студентами других факультетов, которые вообще ни на чём не умеют, а через месяц зачёт сдавать по этой вашей сишечке, и тут уж всё, на Паскаль времени нет совсем никак, так что приходится Си первым языком. Я это к тому, что опыт-то у меня есть и того и другого. А ещё у нас на факультете поток один из трёх Си первым языком изучает, два других пока держатся, и что получается из студентов каждого из потоков — видно невооружённым взглядом.

Но вы продолжайте, продолжайте.

NB для тех кто представляет противоположную сторону: Платон мне друг, но истина дороже, какие ещё нахрен алгоритмы?! Начинающих приходится учить тому, как из непонятных операторов сделать программу, которая что-то делает, и до алгоритмов, которые этим словом называть не стыдно, тут ещё примерно как до луны пешком. А Паскаль нужен, чтоб избежать сишности головного мозга. Пояснения см. в книжке, ссылки выше.

Croco ★★★
()
Последнее исправление: Croco (всего исправлений: 1)
Ответ на: комментарий от Croco

параграф в книжке, где я объясняю, как конкретно Си первым языком уродует мышление

Скопируй его сюда.

question4 ★★★★★
() автор топика
Ответ на: комментарий от mister_VA

Хотя это неявно уже писалось, но, похоже, никак не доходит до разума «паскаль-вон-из-образования».

Похоже, некоторые разумы, топящие за паскаль, просто не в состоянии воспринимать информацию.

В сотый раз повторяю: учебный курс с учетом «магических» значков сишки можно устроить так, чтобы поначалу обходить их стороной по-максимуму. Адресная арифметика и указатели не так страшны, как их малюют паскаль-фанбои и может быть объяснена за одно занятие. Трата времени на все эти несравнима с изучением целого языка.

Для чего создавался Pascal? Для ОБУЧЕНИЯ.

И это совершенно не означает, что он подходит для обучения лучше всего.

Ты, кажется, уже четвертый человек, кого я посылаю читать Прату, для подтверждения этой концепции.

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)
Ответ на: комментарий от aureliano15

Бородатое легаси тоже кто-то должен поддерживать.

Давайте учить алгол, говорю же. На нем наверняка есть какое-то легаси. Или бейсик - он-то еще проще для обучения.

Нет. Это значит, что современность и свежесть языка не так уж и важна.

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

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

Он не будет уметь отлаживать их без стерильного компилятора.

В результате и то, и другое он освоит лучше.

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

Язык без строгой типизации, что уже плохо для обучения

В питоне строгая типизация.

ООП надо давать на втором этапе

ООП в питоне очень простой, прям совсем упрощенный. Я согласен с тем, что нужно давать его на втором этапе, он следует учитывать факт, что ООП на самом деле очень легко объяснить на примере именно питона.

Отсутствие возможности управлять памятью — для обучения тоже минус

Сначала мне говорят, что маллок - это страшно. Теперь говорят, что памятью надо управлять.

Многие алгоритмы из-за отсутствия ссылок невозможно реализовать

Ты точно знаешь питон?

liksys ★★★★
()
Ответ на: комментарий от Croco

Си первым языком уродует мышление (причём необратимо)

Это ты про побочный эффект что ли? И как же он уродует мышление? Концепция простая, как три копейки.

и что получается из студентов каждого из потоков — видно невооружённым взглядом

И что же из них получается? Не томи.

liksys ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.