LINUX.ORG.RU

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

 


3

3

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

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

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

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

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

Дампик памяти занятой объектом в студию. И чтоб там никаких адресов lineTo не было.

#include <cstdint>
#include <cstdio>

class A {
public:
    A(int32_t i) : i{i} {}
    virtual void lineTo() {}
    virtual void lineFrom() {}
    int32_t getI() const { return i; }
private:
    int32_t i;
};

template <class T>
void dumpobject(T const *t) {
    unsigned char const *p = reinterpret_cast<unsigned char const *>(t);
    for (size_t n = 0 ; n < sizeof(T) ; ++n)
        printf("%02d ", p[n]);
    printf("\n");
}

int main() {
    A a{0x55555555};
    dumpobject(&a);
}

Выводится:

176 150 64 00 85 85 85 85

Теперь показывай, где тут адреса lineTo(), lineFrom() и getI().

Чо, хипстер, без баззвордов никак, да? :)

Так ты ещё и из тех людей, которые в повседневной речи пользуются терминами вроде «ассоциативный массив» и более ёмкой терминологии не понимают?

Esper
()
Ответ на: комментарий от int64

люди просто не знают и не стремятся узнать\понять, как это работает ниже.

Большинство даже не подозревает, что там есть что-то ниже. Процессы, скрытые за каким-нибудь asdf = new Object() или там Array.append(), для них являются некоей магией которая работает сама собой. Поэтому даже не подозревают, во что это выливается на самом деле.

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

Ты не поверишь. :) Льняная каша, кукуруза и всё такое. Нихрена не переваривается, но набивает желудок. Массово используется в качестве «средства для похудения».

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

Какие, выходит, у тебя виноватые родители.

Дислексию лечить не пробовал?

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

Частоту процессора и объём памяти твоего компа в студию.

Ты на своём доказывай, нечего на чужое зариться.

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

Идеальным был бы тут QML/JavaScript, без всякой там вебни.

Ага, «отличный пример». У тебя бойлерплейта в 10 раз (буквально) больше, чем в «костыльном вэбе».

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

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

Он же не в школе для дебилов собирается преподавать. В бейсике тоже дофига чего есть сложного, в т.ч. в варианте «для спектрума». Всё дело в том, как это подать, в какой последовательности и т.д. Рассуждая как ты, можно придти к мнению, что детям нельзя преподавать физику, потому что квантмех дофига сложный. А решение простое - не надо с ходу рассказывать про квантмех, для начала хватит и законов Ньютона. С языками тоже самое, print 2+2 он везде одинаковый. Если чего и следует избегать, так это вычурного синтаксиса.

no-such-file ★★★★★
()
Ответ на: комментарий от Stanson

Вот, дамы и господа, полюбуйтесь. Человек не осили ООП и не может абстрагироваться от конкретной реализации. Ну может со временем познает дзен...

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

Не вижу тут аргумента. Я то же самое про тот же Си могу сказать. Говнокода на Си - более чем достаточно, и типизация тоже ни разу не strong. Да и в плюсах тоже при желании можно себе ногу отстрелить и все тот же loose typing устроить.

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

даже не подозревает

Я все же склоняюсь к формулировке «не задается таким вопросом». Если отбросить область программирования, то в быту, такое же большинство, вовсе не задается вопросом как работает то или иное, устройство, да даже как и почему включается свет в комнате. Но я не думаю, что они искренне верят в волшебство. А вот отсутствие любопытства и прочих 'исследовательских' болезней, это всегда ведет к маркобесию, в том или ином виде. Что собственно и отражает сегодняшнее общество потребления. (а ведь технический дебилизм лишь верхушка айсберга)

Расстраивает лишь то, что нет никакой совершенно статистики относительно количества того, сколько еще есть живых. Есть лишь насущная константа в 95%.

int64
()
Ответ на: комментарий от Esper

Теперь показывай, где тут адреса lineTo(), lineFrom() и getI().

Например, в той херне, на которую указывает адрес 00 64 150 176.

85 85 85 85 - это твоё 0x55555555 в десятичном виде.

Какая разница, где и как в твоей структуре хранятся данные? object->lineTo или object->class->lineTo - разницы никакой тащемта.

Кстати, забавно, что значение i ты задаёшь используя hex, причём характерный (знаешь почему характерный ?), а выводишь данные используя десятичное представление :) Это, собственно, отличное доказательство того, что любители абстракций очень плохо понимают чего же они на самом деле делают. Вы можете отлично жонглировать своими вымшленными абстракциями, но когда доходит до дела получаются вот такие вот смешные ляпы.

Так ты ещё и из тех людей, которые в повседневной речи пользуются терминами вроде «ассоциативный массив» и более ёмкой терминологии не понимают?

«ёмкая теминология» - это тоже баззворд. Попробуй обходится без них.

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

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

int64
()
Ответ на: комментарий от den73

Как у него с пошаговым отладчиком?

Тулинга кроме кросс компиляции пока никакого нет.

Как у него с пошаговым отладчиком?

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

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

Например, в той херне, на которую указывает адрес 00 64 150 176.

Садись, три. Адреса getI() там нет в любом случае.

85 85 85 85 - это твоё 0x55555555 в десятичном виде.

А я-то всё ждал, кто же мне это объяснит.

Какая разница, где и как в твоей структуре хранятся данные?

Такая, что хранятся они не в структуре.

значение i ты задаёшь используя hex, причём характерный (знаешь почему характерный ?)

Это «шахматка», то бишь 0101..01b. Она легкоузнаваема в любом виде.

а выводишь данные используя десятичное представление

Потому что не помню format string для вывода хекса, а гуглить его для наколеночного кода мне влом.

Это, собственно, отличное доказательство того, что любители абстракций очень плохо понимают чего же они на самом деле делают.

Не доказал. Попробуй ещё.

«ёмкая теминология» - это тоже баззворд.

Твоё определение базворда?

Попробуй обходится без них.

Попробуй обходиться без юлежа.

Esper
()
Ответ на: комментарий от Shadow

elctron тот же браузер, просто c расширеным апи (с помощью которого, к слову, в два пальца реализуется браузер, на все том же одном js, без необходимости прыгать с языка на язык). Кастомизация получше всяких этих ваших XUL'ов.

А как это реализовать?

Я про прямую манипуляцию DOM и CSSOM из js.

Ничто не мешает писать на одном языке все, что хочется. Если хочется.

Чем это, например, хуже и сложнее бейсика, если для того же обучения? https://jsfiddle.net/n2EYw/517/

int64
()
Ответ на: комментарий от Esper

Твоё определение базворда?

базворд - это базворд

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

без необходимости прыгать с языка на язык

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

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

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

ку-ку! металлы не могут быть прозрачными

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

и да, идея использовать такие платформы как electron или nwjs для отдельных приложения - глупа и не рациональна. эти платформы нужны для чего-то очень сложного (браузер\ide), но не для написания чат-клиентов, или создания холста для игрушки. Можно писать плагины к уже установленным у пользователей браузерам, а для более сильной интеграции в систему, можно писать демоны\сервисы.

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

Что ещё за любишь или не любишь?

Как можно любить или не любить отвертку или дрель? Что-то подходит хорошо для задач, что-то не очень. Я не знаю, откуда ты взял сведения о том, что я хейтер JavaScript, например. Эти сведения, как минимум, ошибочны или ты это тупо придумываешь.

Да, допустим, я недолюбливаю современный Web и здесь я выражаю своё мнение — Web переусложнён и абсолютно не подходит для изучения ребёнку, так как нет в нём единства и какой-либо концепции. Учить детей следует хорошему.

У тебя бойлерплейта в 10 раз (буквально) больше, чем в «костыльном вэбе».

Нет тут никакого «бойлерплейта». Всё логично и понятно. Всё в пределах ОДНОЙ, МАТЬ ЕГО технологии. Создаётся окно с растянутым холстом и в свойстве onPaint делается отрисовка. Никаких дурацких предподвыертов с HTML или document.createElement('canvas'), как в примере Int64. Ребёнок спросит, что делает document.createElement('canvas')? Что ему ответишь? Начнёшь говорить про HTML или DOM? Или скажешь «магия»? Каждую строчку QML-кода в моём примере ты можешь подробно истолковать ребёнку, не затрагивая каких либо тем кроме, собственно QML и его JavaScript-подмножества.

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

Это как раз ребенок поймет. «Создаем канву для рисования, а вся программа - это документ»

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

Да я про переключение между языками, сильно переоцененное. Все, что нервирует при переключении JS <-> «любой не эзотерический язык», исправлено с помощью TypeScript.

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

Создаётся окно с растянутым холстом и в

Никаких дурацких предподвыертов с document.createElement('canvas')

Проиграл.

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

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

Мы писали на JavaScript, а предодаватель говорит, что надо всё оборачивать в index.html с XML-ыми <script></script>

Нет единства.

Нет твёрдой концепции.

Костыли и легаси; переусложнение.

Позор современной вебне.

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

Что такое окошко знает и понимает каждый ребёнок. Что такое HTML-документ с каким-то там DOM, не знают даже некоторые Web-программисты. И почему для рисования нужен какой-то там документ, а не тупо окно?

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

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

И я тебя снова спрашиваю, если ты настаиваешь на том, что придется объяснять что такое DOM, то почему ты не собираешься объяснять что такое графическая подсистема и как рисуются примитивы на экране, как отлавливаются события на твоем окне, и все прочее, опускаясь вплоть до машинного кода?

int64
()
Ответ на: комментарий от EXL

Как можно любить или не любить отвертку или дрель?

Вот и я не знаю как, но ты постоянно продолжаешь хейтить Qt/QML.

Я не знаю, откуда ты взял сведения о том, что я хейтер JavaScript

Внезапно, но именно из твоих высказываний :D

Нет тут никакого «бойлерплейта».

Ты шутишь? Из 16 строк(без скобок и пустых строк) у тебя только 5 отвечают за рисования. Для чего нужны еще 11, если на том же js за создание канваса отвечают 2 строки. Нет, я прекрасно понимаю что окошки нужно создать всё такое, но если нужно «просто», то зачем забивать этим голову?

document.createElement('canvas')

Ок, объясни мне что означает SCREEN 12 в бэйсике? Почему 12?

Ребёнок спросит

По-моему тебе уже в министры образования пора. :D

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

Нет единства.
Нет твёрдой концепции.
Костыли и легаси; переусложнение.
Позор современной вебне.

Что ты в это вкладываешь? Или просто популистские лозунги (или религиозные догмы)? :) Где конкретика?

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

Тайпу там еще не запилили компиляцию в машкод? Или хотя бы через трансляцию в низкоуровневый язык?

int64
()
Ответ на: комментарий от EXL

Как можно любить или не любить отвертку или дрель?

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

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

А сборка проекта, линт и поиск по своей библиотеке? А, да, в яваскрипте нет аналога динамической линковки / модулей - только через ж... Модули только виртуальные, по областям видимости.

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

в яваскрипте нет ... модулей - только через ж...

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

В браузерах пока нет, но вообще уже вот: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/import

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

Ну как это в gjs сделано :) Я себе ихний импортер передирал - действительно пляски с бубном при подгрузке.

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