LINUX.ORG.RU

Посоветуйте язык на замену QBasic

 


3

3

Ищу язык для написания простеньких программ и прототипов. Требования:

  • Низкий порог вхождения. Хочу в будущем показывать детям. Сам программирую с 11 лет.
  • Наличие ide. vi и emacs за ide не считаются.
  • Графика «из каробки». Чтобы программка «палка, палка, огуречик - вот и вышел человечик» помещалась на одном экране без гугления сторонних либ.
  • желательно наличие в репах ubuntu
  • желательно наличие под оф.топик

Ранее эту функцию для меня выполнял qbasic.

PS свободно владею: basic, c, c++, pascal, еще десяток языков «читаю со соварем».

Ответ на: комментарий от KRoN73

Придётся записывать на бумажку, бумажка будет вечно теряться...

Создание локальной вики совсем сложно, да? :) Создание директори с темелейтами тоже непосильная задача?

Такое ощущение что тут люди из прошлого века :) Бэйсики, бумажечки... Шел 2016й год!

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от KRoN73

SCREEN 13
LINE (0, 0) - (0, 400)

Не менее магия для того кто не видел ни одного ни другого. Синтаксический/семантический оверхед никуда не убрать. Но что проще

[line 0x0 0x400]

Или

DrawLine line = new DrawLine(0, 0, 0, 400);

?

loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от invy

Не нужно. Есть «холст», по английски «canvas», мы рисуем на нем, потому «canvas.»... Что тут непонятного может быть?

Для обычного человека это всё абсолютно непонятно :)

Тут, вон, на ЛОРе попадаются люди, которые объекты никак понять не могут (буквально на днях тема пробегала). А типовой пользователь, у которого может возникнуть необходимость в «умном рисующем калькуляторе» такое понимает ещё сложнее.

...

Я это всё не от балды пишу :) Я и в школе год информатику преподавал, и опыт обучения программированию учёных/инженеров старой закалки у меня есть... У них совсем другие паттерны работают, чем у айтишников, объекты им очень тяжело начинать использовать.

...

Кстати, когда я в 1990-м учил Си++ я тоже никак не мог понять, что такое объекты. Конечно, интернетов тогда не было, книжек вменяемых было очень мало, но я несколько месяцев не мог понять, что это за фигня такая, пока однажды не понял, что это просто те же структуры Си, только с дефолтовой приватной видимостью :D

KRoN73 ★★★★★
()
Ответ на: комментарий от loz

Код аналогичный твоему бейсику это

Это совершенно непонятный не-программисту код. Тут ничего нет от математики и геометрии, которым учат в школе.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

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

loz ★★★★★
()
Ответ на: комментарий от invy

Создание локальной вики совсем сложно, да? :)

99.9999% простых пользователей не представляют, что это такое. Я знаю даже многих программистов, которые про локальные Wiki не слышали.

Создание директори с темелейтами тоже непосильная задача?

Абсолютно непосильная задача для 95% пользователей :)

KRoN73 ★★★★★
()
Ответ на: комментарий от loz

Но что проще ... или ...

Сложно сказать. Тут уже моя голова за простого юзера сообразить не может :) Скорее первый вариант, всё же, попроще. Но не намного. Одинаково плохи оба.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

`view [base draw]` Это считай аналог твоего `Screen 13`, а `[line 0x0 400x0]` - не знаю куда уж понятней, линия из точки A в точку B, или `[circle 50x50 10]` - круг в точке A радиуса B. Синтаксис не такой же как в школе, я не думаю что это настолько большая проблема.

loz ★★★★★
()
Ответ на: комментарий от loz

у меня самого ушло много времени чтобы разобрать этот код.

Вот поэтому и нужен предельно простой язычок с минимумом возможностей и чтоб операторы по пальцам пересчитать можно было. Чтобы даже написанное профессионалом было понятно любому кто удосужился пару уроков посетить.

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

Stanson ★★★★★
()
Ответ на: комментарий от loz

лизензионный ребол

кстати, тоже проблема

anonymous
()
Ответ на: комментарий от KRoN73

Вся проблема в том, как преподносить материал. Выкинуть слово объект. Выкинуть понятие. Это все не нужно для понимания процесса.

Кстати, когда я в 1990-м учил Си++ я тоже никак не мог понять, что такое объекты. Конечно, интернетов тогда не было, книжек вменяемых было очень мало, но я несколько месяцев не мог понять, что это за фигня такая, пока однажды не понял, что это просто те же структуры Си, только с дефолтовой приватной видимостью :D

И может быть в твоем понимании? Любой человек прекрасно знает что такое холст и как на нем рисуют. Кого не спроси, тебе скажут: берем карандаш и ведем из одной точки в другую (не все сразу так скажут но если подтолкнуть в нужную сторону - согласятся). И нечего забивать голову «структурами в Си».

invy ★★★★★
()
Ответ на: комментарий от loz

`view [base draw]` Это считай аналог твоего `Screen 13`

Только три сложно запоминаемых сущности вместо двух простых. Люди не оперируют в жизни квадратными скобками, так что это уже сразу лишняя сущность. И запомнить номер обычно проще, чем два иноземных слова :) Так что получается всё равно заметно сложнее.

а `[line 0x0 400x0]` - не знаю куда уж понятней

Видишь ли, в школе учат, что линия - это (0, 100) — (200, 300). А тут — иксы какие-то, пробелы и снова квадратные скобки...

Синтаксис не такой же как в школе, я не думаю что это настолько большая проблема

Это реально большая проблема, увы. У нас, айтишников, очень широкий базис разных синтаксисов. И мы легко адаптируемся к новому синтаксису на уже наработанных паттернах. У человека, которые впервые приходит в программирование, базиса специфического тут нет вообще. И ему приходится или пользоваться уже наработанным за годы(!) учёбы в школе синтаксисом из той же математики, которую заставляют учить всех, или резко погружаться в мир китайских закорючек, выстраивая наскоро новый базис с нуля. А опыта в этом нет. Процесс получается очень сложный.

Вообще, не-IT-шный пользователь очень, очень неохотно принимает весь этот синтаксис скобок (кроме круглых для обозначения элементов множеств — этому в школе учат ну и, понятно, в математических выражениях), разделителей, блоков управления и т.п. Выражения, типа if(...) { ... } — это просто как для нас китайские иероглифы — набор закорючек. Вот IF ... THEN ... — уже НАМНОГО понятнее. Удивительно, но люди далёкие от программирования, когда начинают изучать с нуля, Forth понимают проще, чем Си. Хотя в IT-шной тусовке чаще бывает наоборот. Но Basic тут реально вне конкуренции.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

пока однажды не понял, что это просто те же структуры Си, только с дефолтовой приватной видимостью :D

Это понимание возможной реализации но не сущности )

loz ★★★★★
()
Ответ на: комментарий от invy

И может быть в твоем понимании?

Я-то прекрасно понимаю :D

Любой человек прекрасно знает что такое холст и как на нем рисуют.

Да, это любой понимает. Но вот почему кисть должна принадлежать холсту и при чём тут квадратные скобки — это ты обычному человеку втолкуешь с очень большим трудом.

Кого не спроси, тебе скажут: берем карандаш и ведем из одной точки в другую

Вот черепашья графика — она человеку понятна. Но там нет никаких объектов :)

KRoN73 ★★★★★
()
Ответ на: комментарий от loz

Это понимание возможной реализации но не сущности )

Я шёл в программирование «снизу», от радиоэлектроники и машинных кодов (даже ещё не ассемблера!). Поэтому у меня получился большой разрыв между пониманием логической сущности и пониманием физической реализации :) Вот я его никак не мог перекрыть. А без такого слияния объектное программирование невозможно. Что такое структуры — я знал прекрасно, так как в Си хорошо учат тому, как они отображаются на память и т.п. Несложно понять и наборы функций, которые для удобства включаются в структуры. Также я знал прекрасно логику множеств, на которую ссылаются обычно при обучении ООП (автобус как подмножество транспортных средств и т.п.) Но я не видел, как эта логика множеств может превращаться в инструкции процессора :D Пока, вот, однажды не попался на глаза пример, где ООП-классы от структур отличались только private/public :D Тогда в голове и щёлкнуло. Да так, что лет на 5 наступило ООП головного мозга :D

KRoN73 ★★★★★
()
Ответ на: комментарий от loz

Это понимание возможной реализации но не сущности )

Никаких других реализаций просто нет и быть не может, с текущей архитектурой компьютеров. Так что объект - это банальная структура с данными и функциями и ничего больше, как бы ни пыжились всякие словоблуды.

Stanson ★★★★★
()
Ответ на: комментарий от KRoN73

Да, это любой понимает. Но вот почему кисть должна принадлежать холсту и при чём тут квадратные скобки — это ты обычному человеку втолкуешь с очень большим трудом.

Где в JS кисть принадлежит холсту и квадратные скобки?

invy ★★★★★
()
Ответ на: комментарий от invy

Где в JS кисть принадлежит холсту

canvas.lineTo(...)

Тебе никак не отвертеться от того, что методы принадлежат объекту.

и квадратные скобки?

Это я уже про REBOL, проблема у пользователя всё равно одинаковая :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Видишь ли, в школе учат, что линия - это (0, 100) — (200, 300).

Можно попробовать объяснить (кстати, не знаю как это обычно происходит?) что `(0, 100)` это просто форма записи точки через пару координат, разделенных запятой. Что сама точка это не ее запись, и одну и ту же точку можно описать множеством различных способов. И в данном языке точка записывается как `0x100`. Что думать надо точками и линиями, а потом переводить свои мысли в нужную запись.

Но реально пока у тебя претензия только к записи точки, кодирование цвета типа `#aabbcc` и прочего не вызывает вопроса, потому что этому даже не учат.

PS: можешь упростить процесс ученикам =)

red>> точка: func [x y] [make pair! reduce [x y ]]
== func [x y][make pair! reduce [x y]]
red>> точка 5 5
== 5x5
red>> линия: func [p1 p2] [reduce ['line p1 p2]]
== func [p1 p2][reduce ['line p1 p2]]
red>> линия точка 5 5 точка 10 10
== [line 5x5 10x10]
red>> показать: func [what] [view compose/deep [base (reduce ['draw what])]]
== func [what][view compose/deep [base (reduce ['draw what])]]
red>> показать линия точка 5 5 точка 10 10

loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от Goury

Вообще мне бейсик до лампочки как инструмент программирования — никогда его не использовал и не собираюсь, а спросил из чистого любопытства.

DeVliegendeHollander ★★
()
Ответ на: комментарий от KRoN73

canvas.lineTo(...)
Тебе никак не отвертеться от того, что методы принадлежат объекту.

"." не означает принадлежность, а означает, что нужно совершить с объектом манипуляцию. А если коротко: «холст: провести линию в точку»

invy ★★★★★
()
Ответ на: комментарий от KRoN73

Но вот почему кисть должна принадлежать холсту и при чём тут квадратные скобки — это ты обычному человеку втолкуешь с очень большим трудом.

Тут в любом случае надо объяснить что конкретно компьютерная графика работает по-своему из-за различных причин, и графика в таком-то случае имеет вот такие правила описания.

loz ★★★★★
()
Ответ на: комментарий от Stanson

Так что объект - это банальная структура с данными и функциями и ничего больше, как бы ни пыжились всякие словоблуды.

не соглашусь: для тех кто пришёл из мира, где под каждую фантазию аллокейтят кусок памяти и экономят байты - да,

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

anonymous
()

Если тебе нужен qbasic, то почему бы его и не использовать?

PolarFox ★★★★★
()
Ответ на: комментарий от Stanson

Никаких других реализаций просто нет и быть не может, с текущей архитектурой компьютеров

Любая реализация объектов возможна с текущей архитектурой компьютера

Так что объект - это банальная структура с данными и функциями и ничего больше

Объект - это не его реализация. Объект намного больше чем банальная структура.

loz ★★★★★
()
Ответ на: комментарий от loz

Можно попробовать объяснить (кстати, не знаю как это обычно происходит?) что `(0, 100)` это просто форма записи

Можно. Но человеку придётся учить принципиально новое. Повторюсь, это для нас, айтишников, привыкших к множественности синтаксисов, поменять синтаксис — фигня. А у простого юзера это набор паттернов второй сигнальной системы, на котором знания держатся. Ну это же так просто, сказать, что «яблоко» — это «ஆப்பிள்». Просто форма записи другая! Нет никаких проблем выучить тамильский язык! :D

Но реально пока у тебя претензия только к записи точки, кодирование цвета типа `#aabbcc` и прочего не вызывает вопроса

Потому что до этого смысла нет добираться, пока у нашего пользователя проблема даже с тем, чтобы нарисовать дефолтовым цветом :) А так — да. Это абсолютная абракадабра, которую никто не запомнит. У меня, вон, дизайнер знакомый, который #RGB не понимает вообще, всё через колорпикер делает и копипаст результата :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Это совершенно непонятный не-программисту код. Тут ничего нет от математики и геометрии, которым учат в школе.

Да ты задрал уже заботиться об имбецилах - пусть они до конца своих дней постят свои тупые вбросы прямиком с дурдома. Нормальный человек если приспичит вообще осваивает такое говно как C++, Java, Perl, которое ещё убойнее в этом плане. Из мухи слона ты раздуваешь.

ados ★★★★★
()
Ответ на: комментарий от invy

А если коротко: «холст: провести линию в точку»

Если коротко — люди этого не понимают. Это суровая правда жизни :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Можно даже так) запятые добавлять это уже сильно усложнит историю

red>> точка: func [:x] [make pair! reduce [first x second x]]
== func [:x][make pair! reduce [first x second x]]
red>> точка (5 5)
== 5x5
red>> показать линия точка (5 5) точка (10 10)
loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от invy

Объект не имеет ничего общего со структурой. Совсем ничего.

Сестра! Прикрепите это в папку с диагнозом!

ados ★★★★★
()
Ответ на: комментарий от loz

Тут в любом случае надо объяснить что конкретно компьютерная графика работает по-своему из-за различных причин, и графика в таком-то случае имеет вот такие правила описания.

Вот. Поэтому на Бейсике человек начинал рисовать линии через полчаса простейших разъяснений, а тут ему придётся осваивать ряд новых фундаментальных вещей. Осваивать которые у человека всё равно не будет ни времени, ни желания (он не программист и программирование для него не самоцель). Поэтому он запишет всю магию в тетрадку, а потом потеряет и не сможет ничего написать. А на Бейсике ему нужно было выучить всего несколько простых слов в рамках уже имеющихся понятий. И тетрадка с заметками была не нужна :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

У меня, вон, дизайнер знакомый, который #RGB не понимает вообще, всё через колорпикер делает и копипаст результата :)

Ну я бы сказал что это уже слишком.

Повторюсь, это для нас, айтишников, привыкших к множественности синтаксисов, поменять синтаксис — фигня

Мы же как-то этому научились, никто заранее диплом по синтаксисам не получал. Все-таки работа с компом тоже не такая простая вещь как калькулятор, надо постараться.

loz ★★★★★
()
Ответ на: комментарий от loz

Можно даже так)
показать линия точка (5 5) точка (10 10)

Вот если можешь это довести до линия (5 5) (10 10) - тогда сгодится :) И чтобы в шапке программы не было магических слов сложнее SCREEN 12 :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Прекрасно понимают. Если не забивать им баки словами «объект», «структура», «метод принадлежит объекту» и т.п.

Люди не понимают абстракций, зато понимают конкретные вещи.

invy ★★★★★
()
Ответ на: комментарий от loz

дизайнер знакомый, который #RGB не понимает вообще

Ну я бы сказал что это уже слишком.

Это суровая правда жизни :D Нет, что цвета «состоят из красного, зелёного и синего» он знает, конечно. И с каналами в Фотошопе легко справляется. А вот как оно потом в HEX превращается — это чистая магия.

Мы же как-то этому научились

Представь, как художники сидят вечером после выставки и говорят «ну что сложного научиться рисовать, мы же как-то этому научились!» :D

У нас же тут антропный принцип — на ЛОРе ты не найдёшь человека, которому сложно осваивать компьютерные принципы.

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

Раньше было проще :) Особенно на чём-то, типа ZX-Spectrum. Там даже «SCREEN NN» писать не нужно было. Нажал кнопку включения, подождал 3-5 секунд и пишешь сразу год. При чём даже команды помнить не нужно было в точности, они уже на клавишах были записаны :)

Вот, для иллюстрации:

http://torinak.com/qaop

Пишем W 100,100<enter> — и линия уже на экране :D

«сейчас таких не делают» :D

KRoN73 ★★★★★
()
Ответ на: комментарий от invy

Люди не понимают абстракций, зато понимают конкретные вещи.

Именно поэтому они не понимают ООП :) Потому что это не конкретная вещь, а офигенная абстракция.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Именно поэтому они не понимают ООП :)

Если только старперы с закостенелым сознанием. ;)

Потому что это не конкретная вещь, а офигенная абстракция.

Вполне себе конкретная вещь (при правильном интерфейсе).

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от invy

Если только старперы с закостенелым сознанием. ;)

Не-а. Обычные люди за пределами круга IT-шников :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Никакой проблемы в этом нет:

red>> линия: func [:x :y] [compose [line (make pair! reduce [x/1 x/2]) (make pair! reduce [y/1 y/2])]]
== func [:x :y][compose [line (make pair! reduce [x/1 x/2]) (make ...
red>> линия (5 5) (10 10)
== [line 5x5 10x10]

Засунуть все свои определения можно в init-файл и (пока еще дефолтного, вроде, нет), загружать командой

do load %user.red
loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от KRoN73

Согласен. Насчет «тогда было проще делать», но и технологии были проще, ты же видишь что могут современные гуи, спектрумам такое и не снилось (хотя и оно все еще далеко до совершенства).

loz ★★★★★
()
Ответ на: комментарий от loz

ты же видишь что могут современные гуи

Это важно для профессионального программиста и для пользователя программного продукта. А вот непрофессиональные прикладные программисты в результате вымерли практически как класс :) Потому что непрограммист когда-то мог рисовать графики в Basic без проблем, а современный GUI даже не всем программистам под силу :D И сегодня непрограммист просто рисует графики в Excel без всякого программирования. Они даже красивее получаются, но — строго по заданным рельсам. Шаг влево, шаг вправо — задача не имеет решения. И заказывается работа профессионального программиста :D

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

А вот непрофессиональные прикладные программисты в результате вымерли практически как класс :)

devops это изменит :)

anonymous
()
Ответ на: комментарий от KRoN73

Ну ниче ты покусился на задачу, столько корпораций и людей работали над тем чтобы усложнить IT, а ты хочешь чтобы все просто было =)

На самом деле это одна из идей в основе ребола, посмотри вот это: http://easiestprogramminglanguage.com/easiest_programming_language.html

loz ★★★★★
()
Ответ на: комментарий от KRoN73

На самом деле на питоне можно простую графику не сильно сложнее, чем на Спектруме сделать. Но да, когда объяснял самые азы, ничего, кроме как запустить эмулятор спектрума мне в голову не пришло :(

slapin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.