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
72407
Pphantom в сообщении #1382720 писал(а):
Да.

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

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

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

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


09/05/12
25179
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
706
rockclimber в сообщении #1382730 писал(а):
Это позволяет вообще любой язык с прямым доступом к памяти.


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

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


27/04/09
28128
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
72407
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
763
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
28128
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
78
rockclimber в сообщении #1382730 писал(а):
Единственная проблема с ним - нет пошагового отладчика под Mac (точнее, что-то такое есть, но не для простых умов, я повозился пару часов и плюнул), но школы на маки вроде не перешли пока.

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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


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

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


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

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

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


06/07/11
5645
кран.набрать.грамота
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
3158
Уфа
Pphantom в сообщении #1382735 писал(а):
Тогда уж лучше какой-нибудь Logo.
Кстати, почему бы и нет? В отличие от других упоминавшихся языков, он специально разработан для обучения программированию. И там, если вдруг кто не в курсе, есть не только черепашья графика. Со структурами данных в этом языке всё хорошо, ибо под овечьей шкурой панцирем черепахи прячется не кто-нибудь, а LISP.

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


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

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

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



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

Сейчас этот форум просматривают: drzewo, mihaild


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

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