Другие языки программирования и технологии

Язык для обучения программированию (+)

А все-таки, какой из известных языков программирования хорошо подходит для обучения? Кто может аргументированно ответить. Я считаю, что паскаль. 1) Распространен. Существует много материала для начинающих. 2) По моему мнению, больше, чем языки базирущиеся на синтаксисе Си, соответствует принципу наименьшего удивления: a) if a = b then dosomething; в условии '=' обозначает именно то, что ожидает новичок; существует слово 'тогда', которое связывает условие со следствием его выполнения. b) Индексы массивов могут начинаться с единицы. Вы часто считаете предметы в обычной жизни с нуля? c) Существует деление на процедуры и функции. Легче понять что подпрограмма ничего не возвращает, чем возвращает пустоту. 3) Типизация и относительно строгие правила заставляют хотя бы более менее нормально оформлять код. Недостатком я бы выделил большую "многословность". Очень тяжело читать неграмотно форматированный код. Это не всё. И это не "истина первого рода". Я даже не читал какие-либо исследования по этому поводу. Это мое мнение, которое я постарался обосновать. Я бы хотел видеть такой же, хотя бы один, аргументированный ответ. Навеяно строчкой: "нубы и дилетанты которые думают что паскаль лучший язык для обучения" С уважением, нуб и дилетант!
Бе́йсик (от BASIC, сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих)
Гриша Романов
Гриша Романов
76 473
Лучший ответ
Виктор Бернацкий Здравствуйте, Юрий! Спасибо за ответ! Хоть один аргумент)
К бейсику у меня претензии к неопределенному значению '=' и next i, Следующее i как то не очень увязывается с понятием повторения цикла, а просто next с переменной цикла. Переменные не обязательно пределяются... Но это моя система взглядов.
Хотя неопределенное значение равна и неописываемые переменные - это скорей плюс для начинающих.
Наверное дисциплинированность паскаля им тоже не нужна..
Просто хотелось узнать что-то нового в этой области. Почему-то еще не приходилось видеть авторитетных основателных работ ориентированных на начинающих... Все больше курсы: смотри и делай как я...
Несомненно, что Pascal намного ближе к человеческому и алгебраическому языку. Он идет от Алгола - языка для записи алгоритмов, приспособленного к выполнению на компьютерах. Си же идет от ассемблера, от программирования на низком уровне.
Pascal позволяет легко индексировать массивы от любого значения, у него гораздо проще ввод-вывод, понятнее циклы, передача параметров в подпрограммы и так далее. Словом, он намного проще.
Однако программисту все равно придется переучиваться на С++. А непрограммистам программирование, например, в школе, давать абсолютно не нужно и даже вредно.
Ктс Комплекс
Ктс Комплекс
96 228
Виктор Бернацкий Вот, Вы меня поняли))
А что там переучиваться то... Думать уметь надо... а переучиться всегда можно...
Scheme и MIT-овский курс SICP - для обучения ПРОГРАММИРОВАНИЮ.
Паскаль - для начального обучения КОДИРОВАНИЮ.
Си и Ассемблер (не важно - какой) для обучения системному программированию и работе с железом.

Обоснование:
- Лучше сразу привыкать, что считать нужно с нуля, чем жестоко мордой об асфальт переучиваться.
- Деление на процедуры и функции - чистая формальность. Кроме того, почему вводится органичение, что функция может возвращать только одно значение результата и только один раз? А как же продолжения и сопрограммы? В пасквиле такой сущности ВООБЩЕ нет!
Павел Болгаров
Павел Болгаров
84 349
>>Навеяно строчкой: "нубы и дилетанты которые думают что паскаль лучший язык для обучения"
)))) я так понимаю тема спешиал фор ми? )
>>1) Распространен. Существует много материала для начинающих.
в школах? http://www.weblancer.net/vacancies/?search_id=1456851985&keywords=delphi одна вакансия просто бешенное распространение!
>>2)
а) не меньшее удивление у новичков выказывает что присваивание это := ...тоже не совсем то что ожидает новичок. . так что объяснить что := это равно или == оператор сравнения одинаково займет время так что глупый аргумент.. .
б) тоже какой то аргумент не важный. . объяснить что начинается с нуля тоже проще пареной репы.. .
с) как показывает практика (и обилие вопросов на ответах чем отличается процедура от функции паскаль) не легче!

>>3)
типизация и строгие правила присущи только паскалю что ли оО? !

>>Недостатком я бы выделил большую "многословность". Очень тяжело читать неграмотно форматированный код.
этот недостаток присущ абсолютно любому языку если на нем пишет человек который пропустил мимо ушей стандарты программирования! !

обоснованный аргумент:
просто кто то ткнул пальцем из чиновников в паскаль даже не понимая что это такое... и преподы его и выучили. . а что то переучивать влом. . ибо за это никто не доплатит.. .вот и морозятся что паскаль само лучше для обучения....хотя не один из моих знакомых преподов информатиков не смог внятно объяснить почему.. .я уже молчу о том что половина из них читает с листочка/книги и сами не понимают что читают...
если у ученика есть талант и тяга к программированию ему все равно с какого языка начинать. . я начинал с СИ. . и ни капли мне не было сложно!
но если нет никакой паскаль не поможет (и не надо мне говорить что всех можно научить надо только захотеть.. .я уже пытался обучить PHP бывшую одногрупницу с красным дипломом .. ну не может она понять нивкакую где применять циклы и условия.. .не получается у неё логически мыслить. . хотя у неё по математике 5-ть. . мне все время домашку делала по математике. . а у меня по математике ноль.. .я теперь работаю программистом, а она продавцом на базаре! )
Севак Багдян
Севак Багдян
41 003
Виктор Бернацкий Ага!) Специально для Вас!) Нравится то как Вы отстаиваете свою точку зрения)
Ну распространен как раз таки в школах. Я и говорю про базовый уровень.
а) Тогда бейсик нас обспорил))) Хотя я := легче принял.
"б) тоже какой то аргумент не важный.. объяснить что начинается с нуля тоже проще пареной репы... " - ну я вот долго учился это использовать...
Типизация - нет конечно. Но в си к, примеру, слабже. В бейсике вообще нет)
"если у ученика есть талант и тяга к программированию ему все равно с какого языка начинать.. я начинал с СИ.. и ни капли мне не было сложно!" Согласен) Я начинал с Б3-34 ) его язык куда легче и паскаля, и си, и бейсика)
Почему Вы так слишком упираете на талант? Для работы - да. А для простого обучения?
Хотя если учесть что это простое обучение никому нафиг не надо... Может Вы и правы. Я просто ищу методики легкого эффективного обучения...
Паскаль БЫЛ хорошо подходящим для обучения.
Теперь реалии изменились, и я склоняюсь к тому, что лучше сразу учить язык семейства С. И желательно сразу с обьектами, т. е. С++. Или использовать Паскаль только как начальный этап - типа ВАУ!))) .
Иначе будут неоправданные трудности при переходе к современным технологиям.
Как всегда, сугубо мое ИМХО.
Виктор Бернацкий Вот-вот, я про типа ВАУ говорю)))
Сразу с объектами? Если только в/в. Начинать с объектов - для меня это ужасно. Хотя Т.Бадд писал что ООП понимают лучше ученики, чем опытные профи процедурного стиля
А помоему, для обучения программированию больше подходит бейсик и он даже проще паскаля в понимании.
Скачать среду программирования в месте с учебниками и видеоуроками для начинающих, можно здесь http://rutracker.org/forum/viewtopic.php?t=3232116
Артем Крутась
Артем Крутась
31 824
- многословность и многобуквенность синтаксиса при убогой семантике.
- громоздкие конструкции модульного программирования отбивают желание организовывать код любым способом;
- необходимость объявлять все переменные заранее (что, какбэ, вводилось для поддержки вложенных функций) диктует объявлять переменные с неосмысленными именами вроде k, ii, jk для того, чтобы свести их объявления к минимуму, использовать одну переменную максимальное количество раз;
- просто дикий неоднозначный синтаксис;

почти вся русскоязычная литература учит писать фортран-код на паскале, а не паскаль-код.
равенство и присваивание в императивных языках необходимо отличать, иначе в конструкции a = b = c невозможно понять: что должно происходить?
в обычной жизни точка отсчёта, отличная от нуля, дико бесит: "семнадцатый век", "первый час", "третье тысячелетие"... -что за уебан придумал такую семантику? !

нет абсолютно никакой разницы с чего начинать программировать. главное - чтобы программирование было увлекательным, а это от языка практически не зависит.
Антон Егоров
Антон Егоров
9 617
Виктор Бернацкий a = b = c - это из области бейсика скорей....
В паскале такое, казалось мне, не предусмотрено.
А где неоднозначность то?
Я, кстати, однажды, в С++ воспользовался командой ++ при выводе в поток. Мое наивное ожидание правильной последовательности выполнения было подорвано. Почему? Да потому что в/в в С++ разработан стандартными средствами языка. В наших учебниках это названо красиво: потоки... А потом оказывается что это всего-лишь пергруженные сдвиги...
Пример: Вывожу в поток i++,i,i-- в таком порядке. i = 4; Получаю: 344. Ну полный капец! должно быть 455, судя здравой логике (учитывая что слева поток в который мы последовательно выводим числа).
Видно разбор идет слева направо элементарных операций. Потом уменьшаем i, выводим его, увеличиваем выводим два раза. Я так понял, может здесь какой-то другой ПолтерГейтс..
Ну и как объяснить новичку с круглыми глазами такие метаморфозы?
Чтобы он понял "ПОЧЕМУ ТАК", а не что "он тупой".
Цитирую начало вопроса:
***
А все-таки, какой из известных языков программирования хорошо подходит для обучения?
***
Паскаль, Паскаль и Паскаль! Но не только для обучения: там, где надежность на первом месте, наСИльников на пушечный выстрел не подпускают. В оборонке, космосе, авиации применяют языки Паскалевского типа: Ada, Modula-2/3. Цацками хотите заниматься? Ну что-ж, зубрите Си, Си с крестами и Си с решеткой :-)
А)
Александр )(
4 846
Севак Багдян вы забыли добавить: и получать государственную официальную минимальную зарплату в размере 200 баксов... и платить за квартиру 1000 )
вы пока занимайтесь "серьезными" вещами а я на цацках буду в 10 раз больше получать!
Павел Болгаров Я работал в оборонке. Могу сказать так: Там, где я работал, С++ -мало и неохотно - в основном для разач программирования пользовательского интерфейса. С, ассемблер - ПО встроенных систем, реализация алгоритмов и скелет системы.
ПАСКАЛЯ НЕ ВИДАЛ ВООБЩЕ!!! НИ РАЗУ!
Виктор Бернацкий Спасибо за ответ! Просмотрел (к сожалению не прочитал) Вашу книгу. Довольно хороший и объемный труд. Возможно, если бы мне попалась такая книга раньше, то я бы извлек из этого немало пользы. Но даже сейчас что-то немного пригодилось. Не знаю как современные новички воспринимают такое, но думаю, что если дать ее преподавателю в какой-нибудь кружок ( секцию, студию или как там сейчас), то были бы неплохие результаты, мне кажется. Главное чтобы человек смог мотивировать учеников. Кстати говоря, новой литературы такого типа не-наблюдается, к сожалению...
На счет оборонки - знать не приходится, но склонен Вам верить. Тем более сейчас читаю книгу, где пример на Аде со ступенями ракет... Думаю не на пустом месте.
На счет цацок... Наверное все-таки в наше время выгоднее цацками заниматься... И скорей всего я ими займусь, т.к. одно из крупных оборонных предприятий нашей Родины погибает недалеко от моего дома...
Лучше начинать изучать С++, т. к. если ты привыкнешь к такому сравнению "=", или к слову "тогда", ты постоянно будешь делать ошибки когда будешь писать приложения/скрипты на PHP, C, C++, C#, Java и прочих языках, тебе будет намного легче изучать новые языки. Т. е. синтаксис С++ довольно распространен на большинство языков. Чего не скажешь о паскале.
И С++ намного распространенней чем Pascal. Тот же MSDN, там все на С++ (а паскаля я там вообще не видел) . Почитай предложения работодателей, лично я видел 2-3 объявления что нужен Dephi программист, чего не скажешь о C++. Что лучше Object Pascal или С++, это многолетний холивар))
Leonid Lobach
Leonid Lobach
2 530
Виктор Бернацкий "если ты привыкнешь к такому сравнению "=", или к слову "тогда", ты постоянно будешь делать ошибки" - не верю
Вот-вот... Бывает, выучат С++ "за месяц" и думают программистами стали.. Это тоже не есть хорошо
для обучения да, в школах то его учат, но не более того)
NI
Nurbek Izmhanov
2 275
Виктор Бернацкий Ну вот наверное потому, что в школах все его учат, многие критики не могут обосновать другой язык для начинающих.
Паскаль (йаПлакаль)

1) Распространен. Только в школе ну и в тупых каблухах
2) Избыточно
a)if(){}else{}
b) тогда перепиши арифметику вместо 0 и 1 на 1 и 2
c) не вижу ничего зазорного
3) Не согласен ты мне про Фому а я тебе про Ерему

все таки паскаль не сравним с мощностью с

я тебе настоятельно советую всеми фибрами души изучать си
ибо если ты пройдешь эту школу то ты не пожалеешь и научишься думать как программист, си вырабатывает алгоритмическое мышление намного лучше
Daniar Sarsenbaev
Daniar Sarsenbaev
2 179
Виктор Бернацкий Да блин не надо мне реально ничего советовать)
1. Существует много материала для начинающих.
2.
a) Если я иду домой закончил обучение, иначе я еще на уроках. Да как раз современным школьникам.
b) при чем тут арифметика? у нас в классе 20 человек. Нулевой человек - Петя, первый Игорь....
3) for (i=k+++4;i
Pascal изначально создавался, как язык для обучения и смысл в нём был такой, что написанная программа -читается-, то есть, просто перевести мозг на уровень "понимания" кода, когда этот код содержит знакомые слова, а не символы.
Поэтому паскаль хорош для ввода в программирование, так же, как делфи с обилием компонент, для ввода в визуальное программирование и ООП. Если человек реально понимает, что он пишет, то никаких проблем с переходом от одного синтаксиса к другому не будет. Сложно изучать новую парадигму, а в этом вопросе си от паскаля не отличается ничем. Да, и на делфи тоже спрос есть, не особо высокий, но всё же.

Но есть языки и пониже, Лого, KTurtle - это, конечно, совсем примитив, но для обучения самым основам может быть ещё проще, чем паскаль.

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

Синтаксис Бэйсика в принципе, так же доступен, как и в паскале (даже присвоение и сравнение выполняется одним знаком равно :)) и в общем, так же может быть использован для обучения. Хотя, конечно, далеко не все диалекты.
В частности, VBA, как прикладной язык, при обучении в рамках Excel может быть доступнее, поскольку для ввода-вывода данных есть готовая сетка и визуально воспринимать всё проще.
QBasic, вроде бы даже русский вариант имел, но я не считаю, что человеку легко изучить программирование командами "Пусть i =1 До 6 Шаг 2"
DarkBasic может пригодиться для понимания азов 3Д программирования.
PureBasic, активно форсящийся на этом сайте для обучения не подходит совершенно, слишком специфичный стиль, не свойственный большинству языков.

Можно даже с JS+HTML начать, если у человека к этому способности естьи веб, как результат своей деятельности ему воспринимать проще.
Для обучения не плох будет и С++ хоть у него и отличается синтаксис от паскаля его можно выучить примерно за месяц, чтоб решать простые задачи. Знаю потому что сам пишу на паскале, С++ и на нескольких других.
С++ хорош тем что в него встроено много полезных вещей такие как QSort, Heap, Стек, Очередь, Дек и много других вещей.
И если для тебя сложен С++ начинай учить С# у него такой же синтаксис как и у паскаля.
Vlad Medvedev
Vlad Medvedev
1 511
учи какой-нибудь язык с управляемой памятью (например, c#) - эти языки наиболее популярны и эффективны в отношении работа/время
Делфи, бейсик
Виктор Бернацкий Не верю!
Ruby, Assembler x68, python, object pascal (for apple), objective C,C,C++, Java, Prolog - Я тоже так умею советовать)))
это че за ху*ня???? чувак или хз кто там, поиграй в WoW,ты таким языкам научишься
Delphi это не язык программирования, а среда программирования.
Кроме того, от того что там забавно накликивать интерфейс - в голове ничего не прибавится. А также нубу и дилетанту не стоит сразу лезть в ООП (Delphi имеет основой объектно-ориентированный Object Pascal), а если не лезть, то нехрен там и ловить.
Pascal хорош для обучения, только не стоит на нем долго задерживаться.
Виктор Бернацкий А как на счет программной инженерии для нуба и дилитанта?)))
"Начиная со среды разработки Delphi 7.0[3], в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal" wiki
для обучения подойдет Дэлфи