2014 dxdy logo

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

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




На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
 
 Re: Преподавание программирования
Сообщение19.03.2019, 21:37 
Аватара пользователя
Geen в сообщении #1382967 писал(а):
Есть. Но для таких классов "легко" порождаются побочные эффекты - в обучении это плохо.

Я не про обучение. Если не обратили внимание, повторю: я не рекомендовал Матлаб в качестве языка для обучения и не собираюсь его отстаивать в этом качестве. Я только сделал небольшое замечание, касающееся категоричности суждения об отсутствии ссылок.

 
 
 
 Re: Преподавание программирования
Сообщение19.03.2019, 21:55 
Geen в сообщении #1382939 писал(а):
а про пункт 3 Вы что-то странное написали... впрочем, тут это всё равно оффтоп


photon похоже лучше меня объяснил )

arseniiv в сообщении #1382947 писал(а):
это ужасно [матричная ориентированность - ozheredov] — что для школы, что абстрактно (потому же я стараюсь воздерживаться что-то делать на R)


Ничто не мешает ездить на лошади пользоваться двойным циклом для перемножения матриц, в глубине души при этом зная, что есть такси
Используется синтаксис Python
A %*% B

Или там какие-то подводные камни?

 
 
 
 Re: Преподавание программирования
Сообщение19.03.2019, 22:10 
Аватара пользователя
arseniiv в сообщении #1382947 писал(а):
Как связаны обязательность GC и неявность указателей?

Статистической корреляцией.

arseniiv в сообщении #1382947 писал(а):
По-моему они бывают (а если не бывают, то представимы) и не одновременно в обоих комбинациях.

Сказав "А", приводите и примеры.

arseniiv в сообщении #1382947 писал(а):
Интересно. А J? Не знаю в точности их взаимоотношений, но где-то говорили, что, огрубив, J был создан, чтобы всунуть алфавит APL в ASCII.

Ну, вместо этого для решения этой проблемы был создан Unicode.

    (Оффтоп)

    APL - жив, а ASCII - нет!

 
 
 
 Re: Преподавание программирования
Сообщение19.03.2019, 22:48 
rockclimber в сообщении #1382789 писал(а):
Так это ж ничему не мешает. Открываем редактор, пишем код. "Run" - "Compile", "Run" - "Run". Все как везде.
Тогда да, просто в моем представлени это не называется "использовать Lazarus". :-)

Правда, я бы вообще постарался обойтись без IDE, ограничившись редактором с подсветкой синтаксиса.

 
 
 
 Re: Преподавание программирования
Сообщение19.03.2019, 22:57 
ozheredov в сообщении #1382978 писал(а):
Или там какие-то подводные камни?
Да я не про то, что есть операции для матриц, и разумеется я не против если какой-то язык предлагает для часто используемых вещей короткую запись. Я про то, что всё — матрицы. Это уже чересчур.

Munin в сообщении #1382985 писал(а):
Сказав "А", приводите и примеры.
Ну вот один пример (GC +, явные указатели +) выше ссылкой. Примера для неявных указателей без GC я не помню, это могли быть классы из старых Delphi (пока они не перешли на .net) — можно оттуда выкинуть структуры, паскалевские «объекты» и указатели, много переделать, но в принципе жить. Всё же не понимаю, чем проблема представить, даже если не было бы известных обсуждающим реализаций.

(Оффтоп)

Munin в сообщении #1382985 писал(а):
APL - жив, а ASCII - нет!
Как некоторое условное и частичное ограничение ASCII вполне здравствует. Например большинство языков ориентируется на набираемость кода в обычной английской раскладке (кроме собственно строчных литералов, понятно).

 
 
 
 Re: Преподавание программирования
Сообщение19.03.2019, 23:00 
Аватара пользователя
photon в сообщении #1382973 писал(а):
Я только сделал небольшое замечание, касающееся категоричности суждения об отсутствии ссылок.

;-)
Но не будем развивать оффтоп, тем более раз мы оба согласны, что для школы Матлаб не годится :-)

 
 
 
 Re: Преподавание программирования
Сообщение20.03.2019, 00:17 
arseniiv в сообщении #1382998 писал(а):
Я про то, что всё — матрицы.


В матлабе же дофига сложных и user-defined типов данных, которые точно не матрица. Структуры, графические объекты, фреймы, палитры, видеопотоки и т.д. Что плохого в том, чтобы число считать матрицей 1х1, а кортеж из чисел - матрицей-строкой или -столбцом? Я сам не проггер, но подозреваю что вы подразумеваете возможность выстрела в ногу — а как?

 
 
 
 Re: Преподавание программирования
Сообщение20.03.2019, 01:03 
ozheredov в сообщении #1383017 писал(а):
Что плохого в том, чтобы число считать матрицей 1х1, а кортеж из чисел - матрицей-строкой или -столбцом?
Хм. Наверно сейчас я не смогу внятно объяснить, но какие-то аргументы были.

 
 
 
 Re: Преподавание программирования
Сообщение20.03.2019, 01:10 
arseniiv в сообщении #1383028 писал(а):
аргументы были.


Если вспомните — пожалуйста напишите, даже если и в личку, вдруг нам тут за оффтоп люлей навешают. Я тоже вроде и рад матрицам, а внутри как-то не очень

 
 
 
 Re: Преподавание программирования
Сообщение20.03.2019, 01:19 
Может быть не все операции над числами допустимы и над матрицами тоже (логарифм или синус матрицы это нечто маловразумительное). Сравнения на больше/меньше (т.е. любое упорядочивание), знак, ещё какие свойства чисел к матрицам не приложимы. Потому матрицы 1х1 получаются очень-очень специальными - и особо ничем не лучше просто чисел.
Ну это навскидку, на мой взгляд.

 
 
 
 Re: Преподавание программирования
Сообщение20.03.2019, 01:59 
Аватара пользователя
Dmitriy40 в сообщении #1383032 писал(а):
логарифм или синус матрицы это нечто маловразумительное

Это вы сильно пальцем в небо. Наоборот, очень известная вещь. Советую гуглить по "экспонента от матрицы".

 
 
 
 Re: Преподавание программирования
Сообщение20.03.2019, 02:01 
Munin в сообщении #1383033 писал(а):
Советую гуглить по "экспонента от матрицы".
Но по факту она конечно от оператора. Для матриц, порождаемых другими тензорами второго ранга, её вроде никак полезно не определишь.

UPD: Вру, забыл про банаховы пространства. Там мы можем определить сходимость ряда. Ну и плюс экспонента связывает группы и алгебры Ли.

(Оффтоп)

Dmitriy40
Вообще с векторами из одномерных пространств можно делать немало дополнительных вещей, как и в линейные операторы над модулем есть канонический гомоморфизм колец из кольца скаляров этого модуля, для ненулевого модуля — инъективный, то есть скалярную матрицу $\operatorname{diag}(a,\ldots,a)$ можно считать ровно тем же, что и $a$, ну и кольцо $\operatorname{End}(V)$ над одномерным $R$-модулем в результате в точности изоморфно $R$.

Но это не обязательно достаточные соображения для дизайна вычислительной системы и языка. В частности, матрицы есть не только у линейных отображений, а у любых тензоров ранга 2, и например в $V\otimes V$ уже естественного гомоморфизма из кольца скаляров нету. Тут всё ещё может чем-то помогать одномерность (например она позволяет определить линейный порядок, квадратные корни из положительных элементов), но вместе с тем определение умножения будет эквивалентно отождествлению с кольцом скаляров.

С третьей стороны, на матрицы размера $m\times n$ из элементов вообще любой алгебраической структуры $A$ как на функции $1..m\times1..n\to A$ все операции $A$ распространяются естественным образом, и с такой структурой $A^{1\times1}\cong A$, что связывает руки. У конкретных вещей свойств просто слишком много. Математически против матриц, а не тензоров-операторов, аргументировать получается очень неудобно. Потому-то, как уже сказал, аргументы должны быть не совсем оттуда.

 
 
 
 Re: Преподавание программирования
Сообщение20.03.2019, 02:18 
Да, не знал. И то и то оказывается есть. Sorry. :facepalm:

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


C# вряд ли можно назвать простым языком, но это тоже вариант. Смотря кого нам надо подготоврить.

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


Знания о функционировании компьютера / ОС / запущеного скомпилированного надо пощупать. Для этого нужен язык программирования. В общем-то, в мир C#/Java достаточно много пришло из Delphi, C++ как раз потому, что понимают эти концепции.

 
 
 
 Re: Преподавание программирования
Сообщение20.03.2019, 19:30 
Да, я бы и не сказал, что считаю, что надо обязательно начинать с C#, но вообще он выглядит достаточно безобидным, если не считать «проблемы Java»: что для простого хелловорлда надо определить класс и статический метод в нём.

 
 
 [ Сообщений: 93 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group