2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
 
 Re: Преподавание программирования
Сообщение18.03.2019, 18:48 
Заслуженный участник
Аватара пользователя


30/01/06
16/12/19
71277
Pphantom в сообщении #1382720 писал(а):
Да.

Ну, для мотивации и содержательных (но не скучных) задач желателен всё-таки какой-то графический ввод-вывод. С другой стороны, windows-формочки - не оно.

Pphantom в сообщении #1382720 писал(а):
А вот зачем нынешнему школьнику C или C++ в школьной программе, я совершенно серьезно не понимаю.

Есть один плюс: привычка к C-подобному синтаксису. С другой стороны, её можно получить и на C#, и на Java.

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение18.03.2019, 19:10 
Супермодератор
Аватара пользователя


09/05/12
19243
Кронштадт
rockclimber в сообщении #1382730 писал(а):
1. Сравнительно сложным для новичка он перестал быть году в 2008-м, когда в нем запилили наконец-таки нормальную поддержку юникода. Года с 2009-го или чуть позже он уже нормально работал "из коробки".
2. Никаких проблем с написанием программ для командной строки в нем тоже нет, "Start new project" - "Console application", и вперед, тот же Turbo Pascal, только в "окнах".
Я не про это. Lazarus - RAD, ориентированный на создание интерфейса и сравнительно легкое взаимодействие с библиотеками. Зачем это все для первоначального обучения программированию?

Консольные приложения, конечно, писать можно. Но опять же - зачем для этого Lazarus?

-- 18.03.2019, 19:13 --

Munin в сообщении #1382732 писал(а):
Ну, для мотивации и содержательных (но не скучных) задач желателен всё-таки какой-то графический ввод-вывод.
Да, но с Lazarus придется продираться через многочисленные ненужные на этом этапе детали. Тогда уж лучше какой-нибудь Logo.
Munin в сообщении #1382732 писал(а):
Есть один плюс: привычка к C-подобному синтаксису. С другой стороны, её можно получить и на C#, и на Java.
А зачем? Это все-таки школа, даже не колледж/техникум. Да и вообще учить детей плохому нехорошо. :mrgreen:

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение18.03.2019, 19:25 


10/04/12
576
rockclimber в сообщении #1382730 писал(а):
Это позволяет вообще любой язык с прямым доступом к памяти.


Ну... в том же C#, который предлагался в качестве альтернативы, надо плясать с unsafe.

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение18.03.2019, 19:31 
Заслуженный участник
Аватара пользователя


27/04/09
26008
Munin в сообщении #1382732 писал(а):
Есть один плюс: привычка к C-подобному синтаксису. С другой стороны, её можно получить и на C#, и на Java.
Нужна ли эта привычка сама по себе? По-моему, нет. Я понимаю, что читать референсы по языку, который используешь, может быть уже не модно, но если человек путается из-за своей же неосмотрительности, никто не виноват кроме него. А изучать другие языки после первого-второго легче независимо от близости синтаксиса. Ну может чуточку проще, если оба си-подобные, но вряд ли это что-то изменит, если языки достаточно большие.

mustitz в сообщении #1382737 писал(а):
Ну... в том же C#, который предлагался в качестве альтернативы, надо плясать с unsafe.
Разве же это плохо?

Вообще, как понимаю, если надо просто объяснить ученикам всякую алгоритмическую вещь, то чем проще язык, тем лучше (пока он не превращается в Turing tarpit и имеет возможность удобно описывать достаточную кучку абстракций, типа инкапсуляции и функций). Берём тогда к примеру Lua и радуемся.

И ещё: мне кажется, языку не нужны явные указатели, чтобы объяснить модель памяти. Описание языка не заменяет знаний о функционировании компьютера / ОС / запущеного скомпилированного или интерпретируемого кода, оно может быть не более чем компаньоном, требующим отдельного объяснения вторых всё равно.

-- Пн мар 18, 2019 21:33:33 --

Ой, я прочитал «плясать» как «писать». По-моему, никаких особых плясок не нужно: все использующие указатели вещи механически окружаются/маркируются и всё (типы-указатели в сигнатуре метода? пометим; операции с указателями в блоке? окружим).

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение18.03.2019, 20:02 
Заслуженный участник
Аватара пользователя


30/01/06
16/12/19
71277
Pphantom в сообщении #1382735 писал(а):
А зачем? Это все-таки школа, даже не колледж/техникум. Да и вообще учить детей плохому нехорошо. :mrgreen:

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

Pphantom в сообщении #1382735 писал(а):
Да, но с Lazarus придется продираться через многочисленные ненужные на этом этапе детали. Тогда уж лучше какой-нибудь Logo.

Как я понял, фаворит скорее Pascal-ABC. Но можно и Squeak :-)

arseniiv в сообщении #1382739 писал(а):
Нужна ли эта привычка сама по себе? По-моему, нет.

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

arseniiv в сообщении #1382739 писал(а):
А изучать другие языки после первого-второго легче независимо от близости синтаксиса.

У меня опасение, что сбился контекст. Я как раз и говорил о C-подобном языке не как первом.

arseniiv в сообщении #1382739 писал(а):
И ещё: мне кажется, языку не нужны явные указатели, чтобы объяснить модель памяти.

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

 Профиль  
                  
 
 
Сообщение18.03.2019, 20:05 
Аватара пользователя


10/10/18
420
At Home
Munin в сообщении #1382732 писал(а):
...для мотивации и содержательных (но не скучных) задач желателен всё-таки какой-то графический ввод-вывод. С другой стороны, windows-формочки - не оно.
Вполне можно использовать язык, встроенный в текстовый редактор (есть текстовые редакторы со встроенными языками, специально ориентированными на работу в редакторе). Плюсы — 1) всё-в-одном, нужен только редактор; 2) сразу же видны результаты. В помянутом ниже Multi-Edit 7.0 DOS есть и отладчик макропрограмм.

Пример интересной нескучной задачи (копирую частично своё сообщение):

Цитата:
Около 15 лет назад мне стало интересно, какие слова состоят из одинаковых букв. Я прошёл по словарю (примерно миллион четыреста тысяч слов), занося в новый файл (также построчно) сперва "отсортированное слово", а через пробел -- слово как есть. Например, "огород" преобразовывалось в "гдооор огород", а "дорого" -- в "гдооор дорого". Затем отсортировал и убрал уникальные (по буквам до пробела) строки. Получились крайне интересные результаты, даже со смыслом, даже три слова с важным смыслом были. За 15 лет, конечно, позабылось многое.

Писал программу прямо в самом текстовом редакторе, на встроенном в редактор языке (Multi-Edit 7.0 DOS).

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение18.03.2019, 20:32 
Заслуженный участник
Аватара пользователя


27/04/09
26008
Munin в сообщении #1382742 писал(а):
А нужна ли привычка читать по-английски? Тут тоже может быть мнение, что скорее нет. В конце концов, наш язык ничем не хуже.
Нее, я думаю между тем и этим разница громадна. Чтобы научиться читать по-английски, нужно стараться намного дольше, чем чтобы примерно понимать код на не совсем известном не-write-only языке. Если человеку часто надо будет примерно понимать код с си-подобным синтаксисом, то за это время он в нём и разберётся в нужной степени почти наверняка. Если точно понимать — тут уже мимо глубокого изучения конкретных языков не пройти.

Munin в сообщении #1382742 писал(а):
У меня опасение, что сбился контекст. Я как раз и говорил о C-подобном языке не как первом.
Не предполагал такого; можно было бы сказать то же не обязательно о си-подобности, а о какой-то другой синтаксической похожести.

Munin в сообщении #1382742 писал(а):
С другой стороны, личный опыт самому руками сделать связный список и дерево, - имхо, неоценим.
А что, их нельзя сделать в языках без явных указателей? Ну, кроме опять же исключительных.

(Потом, кстати, деревьев обычно столько видов, что их и приходится писать самому (или же это деталь реализации некоторого АТД, о которой пользователю знать не надо, а сам АТД не выглядит как дерево).)

-- Пн мар 18, 2019 22:40:32 --

А вот интересно, уже придуманы человечеством какие-то best practices (такие, что профессионалы соглашаются, что это действительно оно) в обучении программированию [в школе?*] и насколько часто им следуют?

* Сейчас столько разных обучающих сайтов и онлайн-книжек всяких профилей (язык ± фреймворк, применение в области, технология/подход, …), что глаза разбегаются, но они не обязаны удовлетворять (и не уверен достаточно ли обоснованным) требованиям, выдвигаемым к школьному курсу.

-- Пн мар 18, 2019 22:46:55 --

Кстати тут уже упоминали плюс Python в наличии у него ядра к Jupyter (ну и того, что чтобы поставить последний, предварительно нужен только первый)? Многие куски кода малополезно оформлять как отдельные исполняемые единицы, а вот в форме такого окружения — наоборот, продуктивно, легко экспериментировать на месте. Заодно можно там же получать графику в формате например SVG (а если использовать модуль для порождения SVG — то простым и понятным кодом).

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение18.03.2019, 21:11 
Аватара пользователя


19/06/14
45
rockclimber в сообщении #1382730 писал(а):
Единственная проблема с ним - нет пошагового отладчика под Mac (точнее, что-то такое есть, но не для простых умов, я повозился пару часов и плюнул), но школы на маки вроде не перешли пока.

Всё настолько серьезно? Проблема в том, что у бол-ва учеников макбуки и они будут часть заданий дома делать. Что посоветуете?

Munin в сообщении #1382742 писал(а):
Как я понял, фаворит скорее Pascal-ABC. Но можно и Squeak :-)

Вы серьезно? В Pascal-ABC мне не нравится привязка к .NET

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение18.03.2019, 22:10 
Заслуженный участник
Аватара пользователя


30/01/06
16/12/19
71277
arseniiv в сообщении #1382754 писал(а):
Чтобы научиться читать по-английски, нужно стараться намного дольше, чем чтобы примерно понимать код на не совсем известном не-write-only языке.

Вы описываете себя, а не школьника.

arseniiv в сообщении #1382754 писал(а):
А что, их нельзя сделать в языках без явных указателей?

Можно, например, в массиве, но это извращение.

arseniiv в сообщении #1382754 писал(а):
А вот интересно, уже придуманы человечеством какие-то best practices (такие, что профессионалы соглашаются, что это действительно оно)

Они придуманы-то придуманы, но профессионалы как раз с ними предпочитают не соглашаться, вот примерно как вы сейчас.

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение18.03.2019, 23:31 
Заслуженный участник


11/05/08
31881
По поводу паскалевских диалектов. Тут ругали Борланда и рекламировали Фри. Но, между прочим, второй по сравнению с первым -- интерфейсно некоторый отстой. Во всяком случае, сообщения об ошибках у него реализованы достаточно невнятно.

С другой стороны, Фри ориентирован не только на ДОС; в частности, у него нет ограничений по памяти и на формат имён файлов. И это благо. С третьей стороны, есть у него и ещё одно абсолютное зло -- он глючит на безобидных циклах (может, и длинных, но абсолютно безобидных с синтаксической точки зрения).

Но если говорить об именно первоначальном обучении -- ещё раз скажу: Паскаль -- вне конкуренции. Даже независимо от диалекта.

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение18.03.2019, 23:49 
Заслуженный участник
Аватара пользователя


01/09/13
2471
Наброшу я на вентилятор JavaScript :mrgreen:

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение19.03.2019, 00:50 
Заслуженный участник


11/05/08
31881
А я ещё и Матлаб накину. Ещё один идеальный (в смысле в высшей степени продуманный) язык программирования.

Но для первоначального обучения он всё-таки не подходит. Слишком специализирован (хотя специализирован и идеально).

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение19.03.2019, 01:46 
Заслуженный участник


06/07/11
5570
кран.набрать.грамота
Fizykochemik в сообщении #1382761 писал(а):
rockclimber в сообщении #1382730 писал(а):
Единственная проблема с ним - нет пошагового отладчика под Mac (точнее, что-то такое есть, но не для простых умов, я повозился пару часов и плюнул), но школы на маки вроде не перешли пока.
Всё настолько серьезно? Проблема в том, что у бол-ва учеников макбуки и они будут часть заданий дома делать. Что посоветуете?
:shock:
Это неожиданно! Я купил мак 4 года назад, попробовал по привычке поставить Lazarus... В итоге плюнул и забил, что делать сейчас - не знаю. В вашем случае проблема еще и в том, что это не ваши компьютеры. У себя я бы может еще как-то и настроил бы, а вот объяснять потом школьнику, который сам еще толком ничего не понимает и не умеет - увольте. Пусть отлаживают writeln'ами. :wink: В конце концов, не пошаговой отладкой единой...
Попробуйте спросить на freepascal.ru. Там маководы точно были.

Pphantom в сообщении #1382735 писал(а):
Я не про это. Lazarus - RAD, ориентированный на создание интерфейса и сравнительно легкое взаимодействие с библиотеками. Зачем это все для первоначального обучения программированию?
Так это ж ничему не мешает. Открываем редактор, пишем код. "Run" - "Compile", "Run" - "Run". Все как везде. Там и в TP 7.0 была куча пунктов меню и возможностей, которые школьнику не нужны, на них просто никто не обращал внимания.
Pphantom в сообщении #1382735 писал(а):
Консольные приложения, конечно, писать можно. Но опять же - зачем для этого Lazarus?
Я не занимался преподаванием программирования в школе, поэтому не знаю, что там появилось нового за 20 лет. Если вопрос стоит так, что есть Lazarus, а есть куча более удобных альтернатив (я не в курсе, может и правда есть?), то да, Lazarus не нужен. А если вопрос стоит так, что "нужно преподавать паскаль, что посоветуешь" - я посоветую Lazarus как наименее проблемную и наиболее универсальную вещь из тех, с которыми сталкивался.
Pphantom в сообщении #1382735 писал(а):
Munin в сообщении #1382732 писал(а):
Ну, для мотивации и содержательных (но не скучных) задач желателен всё-таки какой-то графический ввод-вывод.
Да, но с Lazarus придется продираться через многочисленные ненужные на этом этапе детали.
Опять же, в ненужные детали вникать необязательно. Есть конструктор форм, рисуем на нем кнопку, дабл-клик, сюда пишем код, который выполнится по нажатию на кнопку... Delphi в свое время за это и невзлюбили: писать на нем оконные приложения было так просто, что куча народу моментально понаписала кучу некачественных приложений. Это был урок всей индустрии, больше никто такие простые редакторы не делал :mrgreen:

arseniiv в сообщении #1382754 писал(а):
Munin в сообщении #1382742 писал(а):
С другой стороны, личный опыт самому руками сделать связный список и дерево, - имхо, неоценим.
А что, их нельзя сделать в языках без явных указателей? Ну, кроме опять же исключительных.
Интересный вопрос, кстати! Ни одного языка не знаю, где было бы нельзя. В том смысле, что в тех немногих языках, которые я знаю - во всех можно.

arseniiv в сообщении #1382754 писал(а):
Заодно можно там же получать графику в формате например SVG (а если использовать модуль для порождения SVG — то простым и понятным кодом).
Это ж векторный формат. Вот от него у школьников точно мозг взорвется. Отложите до первого курса хотя бы :wink:

Munin в сообщении #1382768 писал(а):
Можно, например, в массиве, но это извращение.
Конечно извращение! Вот же:
Используется синтаксис Java
public class Test {
    static class Node {
        Node right;
        Node left;
    }

    public static void main (String args[]) {
        Node tree = new Node();

        tree.right = new Node();
        tree.left = new Node();
    }
}
 

Чем не дерево?

Geen в сообщении #1382781 писал(а):
Наброшу я на вентилятор JavaScript :mrgreen:
Ну да, JavaScript только для набрасывания на вентилятор и годится (в рамках топика). :mrgreen:

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение19.03.2019, 09:51 
Заслуженный участник
Аватара пользователя


01/08/06
2673
Уфа
Pphantom в сообщении #1382735 писал(а):
Тогда уж лучше какой-нибудь Logo.
Кстати, почему бы и нет? В отличие от других упоминавшихся языков, он специально разработан для обучения программированию. И там, если вдруг кто не в курсе, есть не только черепашья графика. Со структурами данных в этом языке всё хорошо, ибо под овечьей шкурой панцирем черепахи прячется не кто-нибудь, а LISP.

 Профиль  
                  
 
 Re: Преподавание программирования
Сообщение19.03.2019, 10:02 
Заслуженный участник
Аватара пользователя


30/01/06
16/12/19
71277
Lisp для обучения программированию - примерно столь же милосердно, как и C.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 92 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

Модераторы: Модераторы, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group