LINUX.ORG.RU

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

 


3

3

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

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

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

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

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

Нету таких.

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

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

язык - http://www.red-lang.org/

Идея интересная. Но синтаксис сильно не человеческий. В школе учат те же линии задавать координатами точек, а значит — скобки и запятые. А тут — line 50x50 50x100. Лишняя сущность. Бейсик тут был однозначно лучше :)

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

В школе учат те же линии задавать координатами точек

Правильно,

red>> type? 50x50
== pair!

а значит — скобки и запятые

Не правильно

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

Ну так имя в студию и пример, как первой строкой программы нарисовать окружность радиусом в 100 пикселей и координатами центра 200,200

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

Так а чем JS не устраивает?

Много лишних сущностей. Программа на Бейсике может быть из одной строчки print 2*2. На JS нужна стартап-обвязка и методы объектов. Собственно, понятие объектов сразу убивает простоту языка — человеку придётся понять, что это такое, а задача это часто очень нетривиальная. И, вообще, нет понятия контекста вывода и ввода.

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

Лишняя сущность. Бейсик тут был однозначно лучше :)

Думаешь?

red>> 50x50 + 100x100
== 150x150
red>> 50x50 * 5
== 250x250
loz ★★★★★
()

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

Посмотри, на чём предлагают детям код на rPI писать.

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

Если тебе хочется - можешь усложнить синтаксис. Язык это позволяет.

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

Но когда на бейсике хочется сделать что-то чуть больше, чем print 2*2 сразу же начинаются проблемы.

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

Но когда на бейсике хочется сделать что-то чуть больше, чем print 2*2 сразу же начинаются проблемы.

На том уровне, который нужен пользователям «продвинутого калькулятора» проблем не возникает :)

Впрочем, я даже такое видел :D — http://www.balancer.ru/g/p2655957

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

Нет, просто если обучать, то бойлерплейт в виде создания канваса в html, подается под видом «нужно и всё». Точно так же как «SCREEN 13» (или как оно там).

invy ★★★★★
()

Почему бы вам не попробовать Lua?

kachsheev ★★★
()

Графика «из каробки». Чтобы программка «палка, палка, огуречик - вот и вышел человечик» помещалась на одном экране без гугления сторонних либ.

RED — всё в одном файле: компилёр, линкер, кроссплаторфма (с начала)

ещё см. unicon

Наличие ide.

не нужно.

anonymous
()

Может какой-нибудь математический пакет?

Вот я на IDL в основном вышиваю. Простота, IDE, отладка, рисовалка - все есть. Но он да, платный (если смущает). Или математика (или как там она, не знаю даже). Наверняка есть какие-нибудь бесплатные «аналоги», вполне годные для начала.

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

Не пиши Red капсом, это не сокращение, выдает в тебе новичка-любителя, так же как некоторые кто пишет «LISP».

не нужно.

IDE нужно и еще как, только IDE как в смолтолке, а не как в джаве.

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

Ну повеселее, конечно, но придётся объяснять все эти view, title, draw и пр. что возвращает нас к той же проблеме с screen/window/visual/gc

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

Паскаль

тоггда уж Оберон-2: BlackBox Component Builder (сборка Intron с пакетным менеджером), Aos Active Oberon (сборки)

в подсистемах есть SDL, OpenGL с примерами: легко и просто устанавливается

в школьной версии Blacbox-а есть черепашка и ключевые слова на русском языке (выглядит почти как 1С:7.7, но это Oберон-2 с модулями и ООП).

сборка BlackBox под Linux: freenix

сборка BlackBox под SDL: blackbox-sdl

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

точно так же как «SCREEN 13»

Согласись, запомнить магию «SCREEN 12» намного проще, чем всё, что требуется подключать в любой альтернативе :)

KRoN73 ★★★★★
()

ещё см. ecere eC

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

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

Суть здесь в другом - в том, насколько просто можно сделать довольно сложные вещи: http://sendvid.com/nd23jw2o

REBOL [
	Title: "Bubbles"
	Author: "Gabriele Santilli"
	Version: 1.0.1
	Needs: [view 1.3.1]
]

bubbles: []
d: [pen 80.80.255.175]

random/seed now

rand: func [v] [random/secure v]
rnd-pair: does [as-pair rand 400 rand 400]

move-bubble: func [bubble] [
	bubble/1/x: bubble/1/x - 3 + rand 5
	bubble/1/y: bubble/1/y - 2 - rand 6
	if bubble/1/y < 24 [bubble/1/y: 428]
	bubble/-10: bubble/1 - (bubble/2 / 3)
]

loop 100 [
	insert insert bbl: insert tail d [
		fill-pen radial 150x150 30 150 0 1 1 128.128.255.105 90.90.255.165 80.80.255.175 
		circle
	] rnd-pair 4 + rand 20
	bbl/-8: bbl/2
	bbl/-9: bbl/2 * 0.2
	bbl/-10: bbl/1 - (bbl/2 / 3)
	insert/only tail bubbles bbl
]

view/new center-face layout/tight [b: box 400x400 effect [gradient 0x-1 0.0.100 10.10.255 draw d]]

b/feel/engage: none

check-close: does [wait 0  if empty? system/view/screen-face/pane [quit]]

forever [
	foreach bubble bubbles [move-bubble bubble]
	show b
	check-close
]

Представь сколько кода, переменных и структур понадобится для этого на стандартных Qt/Java/JS (Дополнительные 100 баллов можно заработать поняв что происходит внутри цикла ;))

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

Не соглашусь. Один раз магию надо подготовить и сделать html с созданием canvas'а и больше никогда не заглядывать и сразу начинать с canvas.lineTo ...

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

Согласись, запомнить магию «SCREEN 12» намного проще, чем всё, что требуется подключать в любой альтернативе :)

package require Tk;
anonymous
()
Ответ на: комментарий от invy

и сразу начинать с canvas.lineTo ...

Один фиг, придётся людям, далёким от программирования, впихивать понятие объектов. Это очень нетривиальная задача.

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

Согласись, запомнить магию «SCREEN 12» намного проще

package require Tk;

Разница в лёгкости запоминания — порядка на два :)

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

Возможности:

* Гуевые элементы, лейауты, кнопочки и тд: http://www.rebol.com/docs/view-guide.html

* Низкоуровневая рисовалка, линии, дуги, кружки: http://www.rebol.com/docs/draw-ref.html

* Графическая система, объекты, события, эффекты: http://www.rebol.com/docs/view-system.html

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

REBOL [

  • в нём сплошные DSL - это слишком круто
  • к network-oriented programming ещё привыкнуть нужно, а, ведь, нужно уметь
  • на русском материалов крайне мало, сетевое сообщество малочисленно, сетевые библиотеки практически отсутствуют
  • UTF-8 уже прикрутили?
anonymous
()

QML + JS, очень просто и наглядно можно работать с графикой, анимировать ее, есть хорошая IDE, доступно в репах, под оффтопом, порог вхождения низкий.

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

1M бинарь, подключать надо ровно ничего.

А на Wiki такой пример для гуя:

REBOL [
   Title: "Hello World in a Window"
   File:%hello-view.r
   Date: 12-January-2002
]

view layout [
    text "Hello world!" 
    button "Quit" [quit]
]

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

в нём сплошные DSL - это слишком круто

к network-oriented programming ещё привыкнуть нужно, а, ведь, нужно уметь

Придется развииваться, нельзя все время в функциях и классах копаться

на русском материалов крайне мало, сетевое сообщество малочисленно, сетевые библиотеки практически отсутствуют

UTF-8 уже прикрутили?

Нет, потому что ребол не развивается. Зато у него есть еще более многообещающий потомок: http://www.red-lang.org/

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

Низкоуровневая рисовалка, линии, дуги, кружки

view layout [box 400x400 black effect [draw [
    fill-pen 3 0x0 0 400 0 1 1 blue blue green red red
    box 0x0 400x400
]]]



Это явно на пару порядков сложнее, чем

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

:)

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

Один фиг, придётся людям, далёким от программирования, впихивать понятие объектов. Это очень нетривиальная задача.

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

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

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

view [base draw [line 0x0 0x400]] 

Без указания цветов, размеров, толщины линии и тд и тп

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

Ты про это?

> wget http://static.red-lang.org/dl/auto/linux/red-24oct16-cf4570a
--2016-10-25 00:34:57--  http://static.red-lang.org/dl/auto/linux/red-24oct16-cf4570a
Resolving static.red-lang.org... 91.121.60.148
Connecting to static.red-lang.org|91.121.60.148|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1072608 (1.0M) [application/octet-stream]
Saving to: ‘red-24oct16-cf4570a’

red-24oct16-cf4570a 100%[===================>]   1.02M  3.14MB/s    in 0.3s    

2016-10-25 00:34:58 (3.14 MB/s) - ‘red-24oct16-cf4570a’ saved [1072608/1072608]

> chmod +x red-24oct16-cf4570a 
> ./red-24oct16-cf4570a 
--== Red 0.6.1 ==-- 
Type HELP for starting information. 

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

Слишком много умолчаний и всякого прочего, типа специфических манипуляций с данными. Это немного не то, что нужно для начального обучения программированию. Всякие insert tail - оно, конечно, приятно, но для начала неплохо бы про массивы и индексы объяснить, чтоб дитё понимало, как этот insert tail вообще работает.

стандартных Qt/Java/JS

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

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

Хорошо, и?) Тут ничего не подключается

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

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

`insert tail` это более продвинутый уровень, согласен, но о нем не обязательно рассказывать сразу, все то же самое можно написать и зная только примитивы типа получить значение по индексу / сохранить значение по индексу, просто выйдет больше кода, пример что я привел написан профессионалом, у меня самого ушло много времени чтобы разобрать этот код.

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

Ты про это?

похоже мои впечатления сильно устарели (в те времена его ещё собрать нужно было :)

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