LINUX.ORG.RU

Metaprog: универсальная графическая среда программирования [в разработке] часть 4

 , , ,


4

3

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

FAQ

1. Где скачать?

Релиза еще не было. Идет разработка, темы посвящены ей. Есть сделанный на LabVIEW прототип (его работа показана в примерах).

2. Почему не открыт код LabVIEW-прототипа Метапрога?

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

3. Почему не Дракон, MIT App Inventor, Unreal Blueprints?

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

4. Чем плохи LabVIEW или MyOpenLab?

LabVIEW пропиетарный, а MyOpenLab - хоть и опенсорсный, но какой-то недоделанный (пытался у себя запустить - выдало джава эксепшоны). Да-да, опенсорсный «клон» LabVIEW написанный на джаве! LabVIEW хотя бы на C++, а это все же меньшее зло. Обе эти системы даже не сделаны «сами на себе» в графике. Они даже не пытаются претендовать на универсальную замену всем текстовым языкам, хотя LabVIEW могло бы, если бы не тупость копирастов. Эти системы написаны на текстовых языках, их код (даже если б LabVIEW был опенсорсным) невозможно редактировать, ни разу не обращаясь к текстовым языкам. Метапрог изначально предполагает полный отрыв от текста и текстовых языков, за исключением Си как бэкенда. И то пользователям никогда не придется иметь дело с текстовым Си за исключением блоков сишных вставок (для особых случаев типа арифметических операций, ассемблерных вставок итп).

5. Почему как бэкенд выбран именно Си?

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

6. В Си указатели и ручное управление памятью. Это же так сложно!

Визуальный Метапрог существенно упростит программирование, но не снимет с программиста ответственность за логику программы, утечки памяти и прочие нюансы. Настоящий программист должен уметь вручную управлять памятью. Никаких живущих своей жизнью «сборщиков мусора» быть не должно. Практика показывает, что попытки «упростить» программирование, убрав ручное управление памятью, ни к чему хорошему не приводят, худший этому пример - Java.

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

Пункт 6 касается разработки программ, то есть исполняемых файлов и библиотек. Для задач типа браузерных/игровых скриптов, разумеется, будут свои подмножества Метапрога без указателей.

8. Почему в Метапроге будут предпочитаться бинарные форматы и чем это лучше?

Бинарные форматы - это быстро и просто. Будут стандартные функции сериализации-десериализации всех типов в бинарный формат. В Лабвью есть такой функционал и я его все время использую - если не менять тип, то все работает как часы.

http://zone.ni.com/reference/en-XX/help/371361R-01/glang/flatten_to_string/

http://zone.ni.com/reference/en-XX/help/371361R-01/glang/unflatten_from_string/

Что-то подобное будет и в Метапроге. При открытом коде никаких сложностей с чтением бинарных файлов не будет.

9. А как будет обеспечиваться совместимость со старыми файлами, сетевыми протоколами итп, если будет изменен тип?

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

Примеры

Metaprog: универсальная графическая среда программирования [в разработке]

Metaprog: универсальная графическая среда программирования [в разработке] часть 2

Metaprog: универсальная графическая среда программирования [в разработке] часть 3

Прокручиваемая и выделяемая строка с автопереносом

https://i.postimg.cc/Gm6KMJBs/image.png

https://pastebin.com/SWJJwvvC

В сравнении с предыдущими частями добавились уже собственные метапроговские функции, которые инлайнятся в сишный код.

Скрины подфункций в следующем примере.

Тот же пример, но покрасивее

Что можно сделать для большего удобства? Убрать инициализацию, подвязку коллбэка на закрытие окна и главную петлю гтк в подддиаграму «главное окно»:

https://i.postimg.cc/vm5DYjsw/image.png

На сей раз не поленюсь сделать скрины и объяснить их суть.

В подфункциях есть три вида контейнеров с данными: константа (стала, constant), контроль и индикатор (сверху вниз):

https://i.postimg.cc/gJkfRVBd/image.png

Значение константы задается прямо в диаграмме. В Си константа превращается в объявление переменной с инициализатором. Контроли и индикаторы в теле подфункции превращаются в терминалы, к которым можно подключаться в «вызывающей» функции.

Сама подфункция «главное окно»:

https://i.postimg.cc/fbsDKR61/image.png

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

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

Обратите внимание, что инициализация должна выполниться перед не только созданием окна, но и всем, что происходит перед подачей виджета на вписывание в окно (вторая последовательность от инициализации до терминала с указателем).

Подфункция для подцепки асинхронных функций:

https://i.postimg.cc/3r0rYVCS/image.png

Добавить объект в контейнер:

https://i.postimg.cc/SNGBhf51/image.png

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

https://i.postimg.cc/xjv7vP0j/image.png

Делаем лейбл (и любой другой нужный виджет) прокручиваемым:

https://i.postimg.cc/R0PtCmkd/image.png

Как видим, сишные функции успешно уходят под капот и программировать в графике становится намного проще. Из этого получается такой код:

https://pastebin.com/16bq1Jbs

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

Каст типов и тактическая победа над нуль-терминированными строками

Оказывается в текстовых буферах гтк можно задавать текст не нуль-терминированной строкой. Этим грех не воспользоваться. Изменяю подфункцию, создающую текствью:

https://i.postimg.cc/s2hrDj6b/image.png

Беззнаковое 32-битное, означающее размер массива (темно-синий провод) кастуется в знаковое 32-битное (светло-синие провода и пустая константа, задающая тип). Функция gtk_text_buffer_set_text в качестве размера строки берет беззнаковое, а не знаковое, как принято - видимо, чтобы через "-1" говорить, что строка нуль-терминированная. Но из-за этого вместо 4 гб строки туда можно подать лишь 2 гб - аж в 2 раза меншье! Что за люди?

Тем не менее, с нуль-терминированными функциями в текстовых полях покончено - и это победа!

https://pastebin.com/hQRMSZ1s

Также там был изменен текст. В остальном пример соответствует скринам выше.

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

Самим создавать. Пускай они заимствуют у нас, а не мы у них.

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

Тут не «заимствование» должно быть, а совместная работа, и английский сейчас является де-факто языком совместной работы в IT.

balsoft ()
Ответ на: Свежий взгляд от hobbit

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

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

Д – Достижение. У чувака с MD OS Ice, помнится, тоже «скрины» были…

Я сравниваю с твоими. Которых почти нет, зато экспрессии и фанатизма выше крыши. Может, кому-то будет не лень вписать тебя на лурку, как ты меня. Ты, кстати, упомянул там мои реальные успехи (построение диаграмм и трансляцию в компилируемый сишный код), чем я уже могу по праву гордиться. А что упомянут в твоей секции?

ты будешь вообще делать свой «антиметапрог»

Почему бы и нет? Как только хоть какая-то публичная версия метапрога твоего появится. Думаю, это произойдёт точно не раньше моего возвращения в середине июня.

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

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

Пока что получается только бабло успешно пилить и крупный бизнес отжимать.

В этом элитки Украины и России едины, при всем показном «противостоянии». Но надо же стремиться к чему-то лучшему. Если б не запрет на политоту, сказал бы как, но это, скорее всего, будет уже на собственном ресурсе.

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

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

Но так ты будешь на несколько шагов назад.

Не вопрос, тем интереснее челлендж. Сейчас всё равно не до того.

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

И это привело к тому, что монополист Intel оху начал внаглую пихать всякие зонды типа ME

Пфф. А про AMD PSP слышал? А про ARM TrustZone? Сорта говна...

уязвимости типа Spectre и Meltdown (которые вполне себе могли специально пихнуть, а не по незнанию)

Однозначно нет, иначе не затронуло бы другие архитектуры.

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

Срочно звони в Intel, IBM, ARM, итд. и рассказывай какие все они дураки.

расскажи мне, как весь этот зоопарк говнотехнологий упрощает жизнь.

Если ты видишь то чего нет, а остальные не видят - проблема в тебе, а не в них.

ри всей ущербности по части призводительности эти технологии НЕ проще в освоении, чем чистый Си - знаю на личном опыте.

Только почему-то на Си кроме ОС и драйверов ничего не пишут, почему-то...Дураки наверное.

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

Дракон не избавляет от текстового кодинга. Там есть графические конструкции для ветвлений и циклов, но все равно надо ручками писать текстовый код, просто он будет обведен в прямоугольнички.

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

Я что-то пропустил?

Лолшто? Аффффффтар уже на свою рахитектуру процессора замахнулся?

Ну всё, тут все конкуренты уж точно умывают руки.

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

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

rebforce ()
Ответ на: Я что-то пропустил? от rebforce

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

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

Пфф. А про AMD PSP слышал? А про ARM TrustZone? Сорта говна...

Да, слышал, интел лишь как самый яркий пример. Судя по всему, разработка своей архитектуры действительно нужна. На уровне ОС, к счастью, вместо насквозь троянной винды можно пользоваться линуксом, но все равно мы вынуждены доверять такому же закрытому софту уже на аппаратном уровне - выбора нет. Что и приводит ко всяким спектрам и мелтдаунам и это только то, что всплыло. О сколько нам открытий чудных...

Только почему-то на Си кроме ОС и драйверов ничего не пишут, почему-то

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

metaprog ()
Ответ на: комментарий от vq156
Процу давно всё компилятор пишет?
Какая ересь, господи прости!
Меня ж интересуют только мыши,
Их стоимость и где приобрести.

© баян

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

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

Причина совершенно другая. Более приземленная.

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

То, что макакам нельзя доверять прямое управление памятью?

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

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

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

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

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

Программировал последний раз давно. В другой области работаю.

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

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

Т.е. вы при этом упорно отказываетесь видеть недостатки в C? Даже после личного использования сегфолтящегося говна и чтения исходников с goto?

Из того софта которым мне довелось пользоваться, сделанный на Си работает как правило лучше всего. Си хорош тем, что его можно оптимизировать и улучшать производительность вплоть до уровня ассемблера. Есть даже ассемблер инлайном, если надо прямо выполнить инструкцию на процессоре - можно сделать это прямо в коде вместо вызова сторонних библиотек. В Лабвью меня, кроме всего прочего, не устраивает отсутствие таких возможностей. Не могу ни прямо вызвать инструкцию процессора, ни прямо управлять памятью, чтобы, например, вкрутить тот же связанный список вместо массива - во многих случаях это б неимоверно ускорило работу кода. Именно из-за ограничений Лабвью я не был знаком с понятием связанного списка. Зато клоуны из NI охотно вкручивают туда .NET и всякое другое говно.

Кстати, в Лабвью генератор сишного кода из схем есть, но он даже рекурсию не поддерживает!

Ну и весь старый софт естественно элементарно перенесется на эту архитектуру!!! УРА ТОВАРИЩИ!!!

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

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

даже в русском/украинском у меня очень тупая фантазия на названия. Я не гуманитарий

Дело не в том, гуманитарий ты или нет. Просто нужно

читать художественную литературу
Это всего лишь размеры массивов (строка в Си - массив), ставятся автоматом.

Если они ставятся автоматом, то почему бы эту второстепенную информацию вынести не на передний план, а куда-нибудь в подсказку?

Самим создавать.

Я надеюсь, не с нуля? Если нет, то как узнавать о новых библиотеках, вместо того, чтобы маяться NIH-синдромом?

Пускай они заимствуют у нас, а не мы у них.

Да? Что именно? Чебурнет?

А вот без всяких джав, питонов, джаваскриптов, nodejs и electron мир был бы куда лучше.

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

Для меня лично да

Чем?

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

Программировал последний раз давно. В другой области работаю.

Значит не претендуй на истину в последней инстанции в области программирования.

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

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

Но в прикладных задачах высокоуровневые языки, типа С++ показывают себя лучше.

Не факт. То эксепшоны С++, то джава эксепшоны, а через какую жопу оно порой работает... уже кучу раз говорилось. Слово Линусу Торвальдсу:

C++ is a horrible language. It's made more horrible by the fact that a lot 
of substandard programmers use it, to the point where it's much much 
easier to generate total and utter crap with it. Quite frankly, even if 
the choice of C were to do *nothing* but keep the C++ programmers out, 
that in itself would be a huge reason to use C.

In other words: the choice of C is the only sane choice. I know Miles 
Bader jokingly said "to piss you off", but it's actually true. I've come 
to the conclusion that any programmer that would prefer the project to be 
in C++ over C is likely a programmer that I really *would* prefer to piss 
off, so that he doesn't come and screw up any project I'm involved with.

C++ leads to really really bad design choices. You invariably start using 
the "nice" library features of the language like STL and Boost and other 
total and utter crap, that may "help" you program, but causes:

 - infinite amounts of pain when they don't work (and anybody who tells me 
   that STL and especially Boost are stable and portable is just so full 
   of BS that it's not even funny)

 - inefficient abstracted programming models where two years down the road 
   you notice that some abstraction wasn't very efficient, but now all 
   your code depends on all the nice object models around it, and you 
   cannot fix it without rewriting your app.

In other words, the only way to do good, efficient, and system-level and 
portable C++ ends up to limit yourself to all the things that are 
basically available in C. And limiting your project to C means that people 
don't screw that up, and also means that you get a lot of programmers that 
do actually understand low-level issues and don't screw things up with any 
idiotic "object model" crap.

So I'm sorry, but for something like git, where efficiency was a primary 
objective, the "advantages" of C++ is just a huge mistake. The fact that 
we also piss off people who cannot see that is just a big additional 
advantage.

If you want a VCS that is written in C++, go play with Monotone. Really. 
They use a "real database". They use "nice object-oriented libraries". 
They use "nice C++ abstractions". And quite frankly, as a result of all 
these design decisions that sound so appealing to some CS people, the end 
result is a horrible and unmaintainable mess.

But I'm sure you'd like it more than git.

http://harmful.cat-v.org/software/c /linus

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

П. С.: к тому же, освоить С++ и другие ООП-языки сложее, чем Си. Сложно и в освоении, и в компиляции, и в выполнении машиной.

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

начит не претендуй на истину в последней инстанции в области программирования

Упаси боже, ниразу не хотелось.

То эксепшоны С++, то джава эксепшоны, а через какую жопу оно порой работает...
но и для меня как программиста. Проще и понятнее.

Если вокруг тебя одни дураки, может дело в тебе?

Слово Линусу Торвальдсу:

Ну себя с Торвальдсом сравнивать тебе конечно скромности не занимать...

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

Не факт. То эксепшоны С++, то джава эксепшоны, а через какую жопу оно порой работает… уже кучу раз говорилось. Слово Линусу Торвальдсу:

А в C как хорошо зато – на любой косяк сразу неотлавливаемый сегфолт, ну или неотлавливаемые баги на любой вкус и цвет.

Для ядра это нормально, ибо там всё равно придется делать опасную магию, а вот для юзерспейса – боже упаси.

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

Ну или просто выдавать на ПК права, как на вождение транспортных средств.

Получите права на вождение Microsoft Windows прямо сейчас! Всего $300 за обучение. Кстати, права на вождение Linux получаются в ближайшем миллионике, со вторника по среду, с 15 до 17 часов. Обучение со скидкой - $5000. Спешите, пока действует акция!

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

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

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

А если начинать сравнивать, то вот гляньте на гнум: гномокарты сегфолтятся по каждому чиху до сих пор [при попытке поменять местами точки маршрута, например] (даже marble уже научился не падать), наутилус падает (уже не помню, сегфолт там или ещё какая бяка) при просмотре больших каталогов с видео (в отличие от дольфина), большая часть гнумософта крутит гуй вместе с вычислениями, а софта для нормального редактирования видео на C нет вообще. Ну и так далее – т.е. сишечка внезапно не способствует удобному созданию стабильных и безопасных приложений. Сишечка отлично подходит для низкоуровневых вещей, но совать её в юзерспейс – это на любителя, примерно как ядро на JS писать.

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

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

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

А ассемблерные вставки – это зло, ибо делает код неперносимым. Их нужно использовать только в самых крайних случаях.

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

реальные успехи (построение диаграмм и трансляцию в компилируемый сишный код),

#include <stdio.h>

int main(){
char metaprog_array_pointer_10156130170823954432[] = {72,101,108,108,111,32,87,111,114,108,100};
unsigned long int metaprog_variable_13830126042312755200 = 1;
unsigned long int metaprog_array_size_10156130170823954432 = 11;
fwrite(metaprog_array_pointer_10156130170823954432,metaprog_variable_13830126042312755200,metaprog_array_size_10156130170823954432,stdout);

}

И что потом делать с таким кодом?

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

Дело не в том, гуманитарий ты или нет. Просто нужно читать художественную литературу

Я тут и на хабре то и дело вижу предложения учить языки и даже читать художественную литературу. Сферическая гуманитарщина в вакууме.

Кстати, Анну Каренину я смог осилить только в пересказе Никонова. Советую: https://www.litmir.me/br/?b=157170&p=1

Мне в классической художке не нравится зацикленность на каких-то страданиях, переживаниях и прочем подобном бреде. И почти нет техники и технологий. Вот бросилась Анна Каренина под поезд - а какого типа был локомотив, вагоны? Какая была скорость, масса? Был ли поезд оборудован воздушным тормозом Вестингауза, были ли исправны тормозные колодки, какое было давление в тормозной магистрали и тормозных цилиндрах? Сколько осей было у локомотива и вагонов? Вообще нуль информации. Только бросилась под поезд. Косвенно можно лишь сказать, что паровоз, потому что других локомотивов тогда не было. Хотя теоретически могла быть конная тяга или эксперименты Пироцкого с электротягой. Могла быть и ручная дрезина, но ее кинетической энергии вряд ли хватило бы на то, чтобы насмерть задавить взрослую самку прямоходящего вида приматов. Даже по ширине колеи непонятно, ведь царскосельская железная дорога в том же Петербурге изначально была ширины не 1524 мм, а 1829 мм, и на момент публикации книги «Анна Каренина» перешита на стандартную колею еще не была.

Научную фантастику тоже не читаю. Там те же яйца только в профиль. Технологии будущего рассматриваются весьма ограниченным взглядом, в основе сюжета те же глупости из области межчеловеческих отношений. Пытался посмотреть Вавилон-5, сериал 90х годов - и там ни у кого нету гаджетов, даже по сегодняшним меркам кажется устаревшим (признаков чего-то более продвинутого типа нейроинтерфейсов тоже не увидел). Звездолетами во всяких «звездных войнах» управляют пилоты, как самолетами во 2 мировую, при том что уже сегодня разрабатываются и внедряются беспилотники - что уж говорить о космическом бое, где все решают доли секунды?

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

Это всего лишь размеры массивов (строка в Си - массив), ставятся автоматом.

Если они ставятся автоматом, то почему бы эту второстепенную информацию вынести не на передний план, а куда-нибудь в подсказку?

Чтобы было удобно использовать и длину массива в функциях где это нужно.

https://postimg.cc/Z0r3BV3g

В этом примере терминал длины подключен к терминалу 3 функции fwrite. Это задает длину массива на запись в файл.

Я надеюсь, не с нуля? Если нет, то как узнавать о новых библиотеках, вместо того, чтобы маяться NIH-синдромом?

Каких? Сишные библиотеки, код, функции, типы итп будут доступны в Метапроге сразу. Вижу, изобретать что-то новое многие ИТшники (и особенно менеджеры) считают злом - вот и имеем говнокод.

Пускай они заимствуют у нас, а не мы у них.

Да? Что именно? Чебурнет?

Метапрог.

Чем, кстати, не устроил питон? Только не надо сказок, что он медленный.

Медленный и «интерпретируемый» (а не компилируемый в быстрый машинный код). Драйвера, ядра ОС, прошивки микроконтроллеров на питоне делают? А читать код на Питоне мне доводилось - все время спотыкался и матюкался.

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

Большинство юзеров ПК, не говоря уже про смартфоны-планшеты, гораздо хуже шарят в компах, чем ТС. Это на фоне опытных разработчиков он выглядит не очень. А на фоне типичного юзера он очень даже эксперт. Если закрыть компы для юзеров, уровня типа Ctrl+F в браузере - это «ого, не знал» - все стартапы, кроме корпораций обанкротятся и работы в айти станет гораздо меньше. Гораздо проще уж изолировать себя от некомпетентных людей.

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

//gcc ./test.c -o ./test $(pkg-config --cflags --libs gtk+-3.0)

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

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

Конечно, чистый Си в текстовом виде неудобен. А вот в графике он будет куда проще и понятнее. Если б меня устраивал текстовый Си - я б не брался за Метапрог.

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

П. С.: пользуюсь XFCE, нормально работает. Вроде тоже на gtk и чистом Си.

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

Забыл последний вопрос. Чем мне удобнее графика? Тем, что не надо декларировать переменные всякие, ставить ";", скобки (){}[], париться с оформлением текстового кода. Только соединять блоки. И еще могу называть все на своем языке (после релиза в Метарпоге будут многоязычные названия переменных, которые каждый будет видеть на своем языке).

Много российских и украинских политиков и прочих говорящих голов любят поговорить о мове и языке. Но где же их праведный гнев на то, что все языки программирования (кроме 1С) на английском?

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

Про ерланг было бы интересно узнать побольше, если кому не лень будет провести ликбез. Я слышал, что там автоматическая параллелизация и отрицается ООП. Может даже что-то позаимствую, но за основу все же беру Си как более универсальную платформу.

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

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

Ну бывает такое, что скучающие железно(до)рожники лезут не в свою область. В этом ничего криминального нет. Но зачем при этом самомнение повышать до уровня радиации в Лос-Аламосе? С Торвальдсом себя постоянно сравнивать, отрицать собственное невежество и дартаньянить по-чёрному все 4 треда.

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

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

Haskell:

не надо декларировать переменные всякие

check, Type inference

ставить «;»

check

скобки (){}[]

check, pointfree

париться с оформлением текстового кода

check, hindent

могу называть все на своем языке

check, utf support

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

Я тут и на хабре то и дело вижу предложения учить языки и даже читать художественную литературу. Сферическая гуманитарщина в вакууме.

Ага. А потом оказывается, что чтобы грамотно сформулировать названия функций, нужно быть проклятым гуманитарием.

Мне в классической художке не нравится зацикленность на каких-то страданиях, переживаниях

Мне тоже. Но никто не запрещает взять, например, книжку о приключениях.

Вот бросилась Анна Каренина под поезд - а какого типа был локомотив, вагоны? Какая была скорость, масса? Был ли поезд оборудован воздушным тормозом Вестингауза, были ли исправны тормозные колодки, какое было давление в тормозной магистрали и тормозных цилиндрах? Сколько осей было у локомотива и вагонов?

Феерично.

Вообще нуль информации. Только бросилась под поезд.

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

Медленный и «интерпретируемый» (а не компилируемый в быстрый машинный код)

Сначала люди пускают слюни при виде gtk3 и портируют на него свой код, потом - экономят на спичках в виде разницы в скорости между ЯП. Программу на Питоне, кстати, тоже можно скомпилировать. Nuitka еще и файлы C создает. Хоть из «Hello, World!» получается слон, но этот слон хотя бы реально читаемый.

Драйвера, ядра ОС, прошивки микроконтроллеров на питоне делают?

Ну, есть PythonOS в качестве эксперимента. Только нахрена? У каждого языка - своя ниша. Десктопного кода в миллион раз больше, чем системного. Хоть Питон не популярен для разработки десктопных приложений, он к этому более чем готов.

А читать код на Питоне мне доводилось - все время спотыкался и матюкался.

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

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

А вот в графике он будет куда проще и понятнее.

Бремя доказательства лежит на утверждающем. Ждём доказательств.

Пока что ваши схемки никому не понятны, что только усиливает сомнения.

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

Мне в классической художке не нравится зацикленность на каких-то страданиях, переживаниях и прочем подобном бреде. И почти нет техники и технологий. Вот бросилась Анна Каренина под поезд - а какого типа был локомотив, вагоны? Какая была скорость, масса? Был ли поезд оборудован воздушным тормозом Вестингауза, были ли исправны тормозные колодки, какое было давление в тормозной магистрали и тормозных цилиндрах? Сколько осей было у локомотива и вагонов? Вообще нуль информации. Только бросилась под поезд. Косвенно можно лишь сказать, что паровоз, потому что других локомотивов тогда не было. Хотя теоретически могла быть конная тяга или эксперименты Пироцкого с электротягой. Могла быть и ручная дрезина, но ее кинетической энергии вряд ли хватило бы на то, чтобы насмерть задавить взрослую самку прямоходящего вида приматов. Даже по ширине колеи непонятно, ведь царскосельская железная дорога в том же Петербурге изначально была ширины не 1524 мм, а 1829 мм, и на момент публикации книги «Анна Каренина» перешита на стандартную колею еще не была.

кто там цитатник собирал?

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

Ежу понятно, что его можно скомпилировать. Можешь сразу в машинный код переводить. Вопрос - зачем нужны исходники на C, если они все равно в итоге нечитаемые? В чем достижение-то? У LabView, думаю, есть свой компилятор и средства для трансляции в C. Или ты свой собственный компилятор/транслятор написал?

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

слакобомжей

В слаке еще в день релиза был GCC9.1 в твой Arch его когда завезут? Через год? Два?

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

Ты хоть что-нибудь знаешь из перечисленного тобой? Как ты составил такое мнение о них?

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

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

Городить зато дискотеку из носящихся туда-сюда байтов легко.

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

Тут не «заимствование» должно быть, а совместная работа

Сказки для детей, такого не будет! Либо это будет уже не Россия.

Дадада, сидящая на нефтяной игле Россия

Ну это плохо конечно, однако не повод сидеть на месте!

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

Только почему-то на Си кроме ОС и драйверов ничего не пишут, почему-то...

PHP, ImageMagick, Python, Gtk, GIMP, Blender, Systemd, Pipewire, NetworkManager, Geany, Xfce4, Tox...

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

Лмао, да ему и жабаскрипт подойдёт:

не надо декларировать переменные всякие

check, Type inference + замыкания, ололо

ставить «;»

check, пускай и с нюансами

скобки (){}[]

увы

париться с оформлением текстового кода

check, prettier

могу называть все на своем языке

check, utf support

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

Gnome3 у меня работает стабильнее всего из DE, вот gnome-music бывало вылетал... Но он на Python...

VarfolomeyKote4ka ()
Ограничение на отправку комментариев: