2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10  След.
 
 Re: О языках программирования для обучения
Сообщение07.02.2018, 22:40 
Заслуженный участник


27/04/09
28128
Munin в сообщении #1290961 писал(а):
Про минусы хотелось бы знать заранее.
Я не знаю, но языка без минусов пока не изобрели. Особенно более-менее наколенного — пусть меня извинят, но языки, разрабатываемые специально для того, чтобы можно было писать код уровня продакшена, проверяются (сам дизайн языка и модулей и весь софт) намного тщательнее, там и ресурсов для этого обычно побольше (заинтересованность, размер команды и число предоставляющих патчи, если проект опенсорсный, и т. д.), а здесь этой цели явно нет (ну или ладно, не явно нет, а не очень есть). Стоит ожидать гейзенбагов со странными описаниями. (А в школе это могло бы смотреться умопомрачительно, но ученики, наверно, к этому моменту уже привыкли к состоянию дел.)

А, ну вообще мне кажется, документация недостаточно подробна. Это после поверхностного поиска в ней кое-чего.

Munin в сообщении #1290961 писал(а):
Нет, меня пугают другие проблемы:
- большой и сложный для начального освоения framework, для совершения простейших вещей;
- большая и сложная, ориентированная на профессионалов, а не на обучающихся, документация.
Так его собственный функционал и документация вам поначалу никак не понадобятся, для этого хватит того, что реализовано средствами самого языка (конечно, компилируется оно, как я понимаю, в MSIL, но вряд ли вы собираетесь дизассемблировать).

Munin в сообщении #1290961 писал(а):
Сам факт, что перед тем, как садиться и писать, надо подумать.
Ну, я сравнивал не с совершенным отсутствием описаний, а с описаниями ближе к месту использования. Это тоже думать, притом, возможно, даже чуть больше — где слишком рано объявлять, где поздно.

Munin в сообщении #1290961 писал(а):
А это что?
Ну, это от batteries included, т. е. стандартных библиотек поставляется достаточно, чтобы делать кучу распространённых вещей, не обращаясь в репозиторий и не пиша своих велосипедов. Python так традиционно рекламируют, но это касается многих языков. Вот сам .NET — весьма такая батарея батареек. Хотя смотря какая версия, старые иногда неприятно удивляют.

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

Munin в сообщении #1290961 писал(а):
(При обучении в классе, можно заставить разбираться в коде другого ученика :​-)
Ого, а после уроков будет свалка. :D (А вообще я не против.)

 Профиль  
                  
 
 Re: О языках программирования для обучения
Сообщение07.02.2018, 22:53 


15/11/15
1128
arseniiv в сообщении #1290948 писал(а):
Есть языки, компилирующиеся в JS. Не обязательно есть кактус необработанным.

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

И ветер в обратную сторону куда сильнее. Есть серверный Js, развиваются среды, где можно создавать на этом языке (или точнее расширения Js ) мобильные и десктопные приложения.

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


27/04/09
28128
Кстати, мне дали добро на форсинг хаскеля в теме.

Хаскель
• краткий;
• функциональный (pun intended);
• типизация статическая, но типы часто можно опускать почти везде;
• у него есть подмножество специально для детей (правда, не помню, не застряло ли там всё какое-то время назад; вы этого не читали);
• не имеет проблемы некоторых многословных языков со статическими методами вместо функций;
• имеет или не имеет отступозависимость и точки с запятой по желанию пишущего;
• отступозависимость учит аккуратному оформлению;
• вопреки некоторым мнениям, позволяет не очень сложно написать чистую функцию, модифицирующую какой-нибудь там массив императивно;
• имеет недорефакторенные числовые классы (ой, это минус, ну и ладно, он всего один), но позволяет переделать по-своему (!), и есть пара модулей с переразложением;
• инстансы и типоклассы на самом деле понятнее ООП;
• ещё 999+ плюсов (как в тетрисе).

(Оффтоп)

По крайней мере, я не скрываю, что это не целиком серьёзно.


-- Чт фев 08, 2018 01:30:50 --

gevaraweb в сообщении #1290970 писал(а):
На Js вполне можно кодить.
Вы ещё скажите, что он Тьюринг-полный. Да, конечно, можно, когда больше не на чем, я так в древние времена писал на VB6. Но когда есть, например, язык со статической типизацией, близкий к JS и компилирующийся в JS, почему не попробовать? (Попробовать предлагать для начала обучению программированию вместо JS.)

gevaraweb в сообщении #1290970 писал(а):
Школьнику изучать другой новый язык, чтобы компилировать его на Js, нет никакого смысла.
Так он и не увидит JS, если всё правильно организовать. В этом случае JS рассматривается как машинный язык.

gevaraweb в сообщении #1290970 писал(а):
И ветер в обратную сторону куда сильнее. Есть серверный Js, развиваются среды, где можно создавать на этом языке (или точнее расширения Js ) мобильные и десктопные приложения.
Это не отменит качества языка. Например, неявное приведение типов практически между всем и всем. Рассказывать, почему это плохо, или хватит картинки?

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


30/01/06
72407
arseniiv в сообщении #1290979 писал(а):
Хаскель...
• функциональный (pun intended);

Это скорее минус. Не стоит учить клингонский как first second language.

arseniiv в сообщении #1290979 писал(а):
Хаскель...
• ...типы часто можно опускать почти везде;

Это тоже минус при обучении.

----------------
arseniiv в сообщении #1290966 писал(а):
Ну, это от batteries included... Python так традиционно рекламируют...

А, так вот почему на batteries java - гугель вернулся с тиной морской...

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


09/05/12
25179
mustitz в сообщении #1290821 писал(а):
Лично я бы с удовольствием рассмотрел бы для обучения язык Ada, читай более строгий Pascal плюс сопрограммы, плюс пре-пост условия, плюс доказательство корректности. Стандарт Ada 2012 как по мне очень удачный.
Это было бы замечательно, но, к сожалению, очень высок стартовый уровень. Ученики разочаруются и разбегутся раньше, чем смогут написать первую программу.

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


27/04/09
28128
Munin в сообщении #1290987 писал(а):
Это скорее минус. Не стоит учить клингонский как first second language.
А вы не думали, что репутация функциональных языков не очень соответствует действительности?

Кстати, сдаюсь, зачёркиваем хаскель и пишем Idris. Там лень и коданные маркируются особо, а ещё там зависимые типы — и можно доказывать корректность своих программ!

Munin в сообщении #1290987 писал(а):
Это тоже минус при обучении.
Можно не значит обязательно. Если учителю надо, чтобы типы были везде, он может следить за этим сам. И если хитрый ученик выведет типы компилятором и после этого впишет, то это тоже скажет о его уровне: или там хоть где-то получится бред (а ещё типы могут не сойтись всё равно, и это вполне вероятно даже без аннотаций), и можно будет спросить его, что он означает, и получить результат, или там будет всё прекрасно, и, опять же, можно спросить, почему там такой, а не иной тип, и удостовериться в том, что это понимается.

-- Чт фев 08, 2018 02:00:46 --

А ещё вот есть язык Nim. Паскаль оказал на него как раз значительное влияние, если присмотреться.

-- Чт фев 08, 2018 02:03:30 --

Кстати, почему Lua тоже не рассматривается? Вот тут уж язык для обучения восхитительный, минимальный вместе с библиотекой и притом со вполне современными средствами.

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


30/01/06
72407
arseniiv в сообщении #1290995 писал(а):
А вы не думали, что репутация функциональных языков не очень соответствует действительности?

Я думаю, что соответствующие навыки не подходят на роль first acquired для обучающихся с нуля. Вообще же знакомство с функциональной парадигмой сегодня, пожалуй, must have, но не как первое. Пролог я бы тоже не предлагал как первый язык.

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


27/04/09
28128
Munin в сообщении #1291004 писал(а):
Я думаю, что соответствующие навыки не подходят на роль first acquired для обучающихся с нуля.
А можно для статистики, насколько вы знакомы с каким-то из традиционных ML-подобных (т. е. никаких лиспов) функциональных языков?

Munin в сообщении #1291004 писал(а):
Пролог я бы тоже не предлагал как первый язык.
А вот тут я сильно предвзято даже не просто соглашусь, а даже буду ругать прологи (в основном, неконструктивно) все сразу. :-)

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


06/07/11
5653
кран.набрать.грамота
arseniiv в сообщении #1290979 писал(а):
Это не отменит качества языка. Например, неявное приведение типов практически между всем и всем. Рассказывать, почему это плохо, или хватит картинки?
Javascript вообще на картинки богат - post1201153.html#p1201153. А кому мало картинок, тот обязательно получит удовольствие от того, что январь - это месяц номер ноль :mrgreen:

 Профиль  
                  
 
 Re: О языках программирования для обучения
Сообщение08.02.2018, 14:12 


15/11/15
1128
arseniiv в сообщении #1290979 писал(а):
Это не отменит качества языка. Например, неявное приведение типов практически между всем и всем. Рассказывать, почему это плохо, или хватит картинки?

Ну минусы есть, не спорю. Как-то в тупик меня ввел код на жс, который вытворял невесть что (

Используется синтаксис Javascript
<script>
var h = 0.1;
for ( var i = 0; i <= 1; i += h ) {
        document.write( i );
        document.write( "</br>" );
}
</script>

Тут я даже не знаю грамотного решения проблемы. Для ЧМ такое поведение языка очень некстати.

 Профиль  
                  
 
 Re: О языках программирования для обучения
Сообщение08.02.2018, 16:48 
Аватара пользователя


26/05/12
1885
приходит весна?
arseniiv в сообщении #1290915 писал(а):
Вот строгое разделение на «место для переменных», «место для операторов» и т. д. — это часто хуже, чем объявление переменных прямо перед местом, где они непосредственно пригодятся (а когда блоки вложенные, удобство только добавляется).
Позволю себе не согласиться. Не знаю, когда это у меня пошло, но у меня есть практика стараться делать объявление переменных в начале каждой процедуры (наверное, всё-таки со школы — когда на Паскале программировал). Всякие аргументы типа "до переменных в большой программе не добраться, если они не на месте" — весьма сомнительны, так как в таких случаях очевидно, что текст программы разросся чрезмерно, и её надо бы прорезать на функции/классы/отдельные файлы (особенно это касается профессионального программирования). В то время как при описанной практике смотришь на заголовочную часть — и сразу становится понятно, какие у процедуры входные параметры и какие вспомогательные переменные.

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


06/10/08
6422
B@R5uk в сообщении #1291173 писал(а):
Позволю себе не согласиться. Не знаю, когда это у меня пошло, но у меня есть практика стараться делать объявление переменных в начале каждой процедуры (наверное, всё-таки со школы — когда на Паскале программировал). Всякие аргументы типа "до переменных в большой программе не добраться, если они не на месте" — весьма сомнительны, так как в таких случаях очевидно, что текст программы разросся чрезмерно и её надо бы прорезать на функции/классы/отдельные файлы.
Основная проблема с этим состоит в том, что не всякий логически обособленный блок стоит оформлять в виде процедуры. Самый яркий пример - это счетчик цикла, который очень часто имеет смысл только внутри цикла, и объявление его на всю процедуру, а не на цикл, бессмысленно.

 Профиль  
                  
 
 Re: О языках программирования для обучения
Сообщение08.02.2018, 16:59 
Аватара пользователя


26/05/12
1885
приходит весна?
Xaositect в сообщении #1291176 писал(а):
Самый яркий пример - это счетчик цикла
С этим согласен, иногда бывает желание определить его прямо в теле цикла. Я даже так и делаю. Иногда (когда других переменных в теле процедуры не объявляется). Потому что с другой стороны, я обзываю все счётчики циклов одной буквой, а остальные переменные — осмысленным именем (типа "iterationCounter"). Поэтому, если у меня несколько циклов, я смотрю на заголовок и вижу не только сам факт их наличия, но и глубину их вложенности по количеству переменных с именем в одну букву. Но это уже исключительно личные предпочтения.

И да, если в программе идёт подряд два и более циклов, то писать
for (int n = 0; size > n; ++n) {
вместо
for (n = 0; size > n; ++n) {
как-то лениво. Не то, чтобы нельзя было бы скопипастить, но как-то в глазах рябит от явно лишнего набора символов в тексте. Плюс перфекционизм подсказывает очевидную оптимизацию размера исходного кода. Изображение

 Профиль  
                  
 
 Re: О языках программирования для обучения
Сообщение08.02.2018, 18:11 
Аватара пользователя


26/05/12
1885
приходит весна?
Я тут подумал и, кажется, понял, откуда у этого подхода с объявлением перед использованием ноги растут. Люди часто считают (неосознанно?) что определить = инициализировать. И во многих языках высокого уровня это действительно так (в которых нет явного объявления). Я не в коем случае не стану спорить, что инициализацию переменных необходимо делать непосредственно перед использованием, но смысловая нагрузка объявления и инициализации, на мой взгляд, разная.

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


27/04/09
28128
B@R5uk в сообщении #1291181 писал(а):
Плюс перфекционизм подсказывает очевидную оптимизацию размера исходного кода. Изображение
Аяяй, это плохой критерий. Код не должен быть коротким безусловно.

B@R5uk в сообщении #1291217 писал(а):
Я тут подумал и, кажется, понял, откуда у этого подхода с объявлением перед использованием ноги растут. Люди часто считают (неосознанно?) что определить = инициализировать.
Не обязательно. Важно, что хороший язык не позволит использовать в блоке имя, объявленное не раньше, а позже места использования. Важно, что надо с меньшей вероятностью крутить код вверх (даже если процедура и маленькая, она может оказаться частично выше верха отображаемой области), чтобы вспомнить, чьё это имя и какой имеет тип и прочее. Важно, что дифф при изменениях в таком случае будет более вероятно сосредоточен в меньшем числе мест. И ещё я наверняка не всё вспомнил.

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

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



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

Сейчас этот форум просматривают: YandexBot [bot]


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

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