|
0 / 0 / 0
Регистрация: 18.10.2017
Сообщений: 13
|
|||||||||||||||||||||||||||||||
Язык O/O++19.10.2017, 01:35. Показов 2700. Ответов 30
Скучное предисловие: Год назад, скажи мне кто, что я вдруг займусь новым
Полтора года назад здоровье вынудило покинуть полноценную работу, и я решил потратить время на восстановление утраченных и недополученных знаний по нативному программированию, которое в моём случае было жутко атрофировано из-за многолетнего увлечения дотнетом и вынужденной работой с жабоскриптом (не спешите бежать на кухню за мылом, я не нодер!). На руках оказались бумажные книги по С/С++ (правда, по довольно старым стандартам), которые худо-бедно были освоены. На очереди ассемблер, хотя бы базис — принципы в теории понятны, но код всё ещё выглядит как «что, думаешь слишком для меня умный?». Гением я и раньше не был, страшно обожал хитрые велосипеды, чистый код, модульность и ненавидел создание шаблонного кода по методичке — но вот после больницы (может из-за наркоза?) голова стала ощутимо туже соображать и всё даётся труднее, но ассемблер нужен — чтобы банально отладкой заниматься (не то чтобы я ею часто занимался…) и понимать, что вообще происходит. Так вот, к делу. Изучая си и кресты, я всё больше проникался их идеями — минимальные накладные расходы и при этом кроссплатформа и высокий уровень. Одно зудело — местами странный синтаксис (ну ещё и несовместимость С++ ABI), явно не подходящая лаконичному языку многословность и ещё парочка-другая мелких неудобств. Ооокей, я могу четверть решить макросами, ещё столько же в теории возьмёт простой препроцессор, но всё равно нужны глубокий анализ и разбор типов. И тут я понял, что мне всего-то нужно исправить синтаксис языка — да, так мало. Но назвать это новыми C/C++ нельзя — совместимость, легаси, овощи, рожь вот это вот всё. Откуда столько шероховатостей в языке? — подумал я. Видимо, сказывается наследие — ведь когда-то был первый C (который K&R), выросший, по сути, из макроязыка для ассемблера. Другие времена, другие требования. И С был макроязыком, и C++ начинался как «С с классами» — нечто, тоже компилирующееся в С. Так может нужен новый уровень абстракции — но именно в таком ключе, чтобы без лишнего кода на выходе? Нужен новый язык, — решил я, — и пусть он будет компилироваться в С/С++. Сразу будет убита пачка зайцев:
И я дал этому языку название — O/O++. Соответственно O будет расширенным C, а О++ — расширенным С++. Подчеркну ещё раз, что мне, несмотря на все недостатки, очень нравятся С/С++ и новый язык должен быть хотя бы не хуже, и при этом оставаться понятным С/С++ разработчикам. Нужно броситься писать реализацию? Нет, подумал я, ведь не компилятор создаю, а (пафос) АЖ ЯЗЫК ПРОГРАММИРОВАНИЯ. Первое правило лени гласит, что лучше сделать ничего, но хорошо, чем что-то, но не очень. Что отличает серьёзные вещи от детских? Правильно — бумажка. Документ, RFC, спецификация, даташит — результат строгого проектирования. Очевидно, что периодически будут требоваться новые вещи, а если языку угрожает какая-либо популярность, то будут альтернативные реализации, тоже по-своему кривые. Значит, нужно чётко поставить и оформить задачу, а для этого нужна сила коллективного планетарного разума, т.е. мнение таких же обычных разработчиком из межсети, ведь не может быть так, чтобы у меня одного чесался зуб кое-что исправить. Сделал две вещи. Во-первых, создал на bitbucket(выбран из-за возможности хостить hg и более адекватной политики, нежели у конкурентов) репозиторий. Он прост — в корне, помимо readme, лежит файл olang.txt непосредственно для спецификации языка, а также находится папка chalkboard, куда в формате txt или md складываются отдельные предложения. Прелесть такого подхода в том, что репозиторий обеспечивает ревизии, контроль и площадку для основного обсуждения, а разделение на отдельные черновые пункты и основной документ позволяет аккуратнее всё проработать. Правила внесения предложений и изменений в целом есть в описании репозитория, но вы также можете писать мне свои мысли любым удобным способом — даже здесь или бумажной почтой (может не дойти и не обещаю, что отвечу). Это очень важно, поскольку язык делается для разработчиков, а не для манагеров и красивых отчётов — а значит, всё серьёзно. Вторая вещь, которую я сделал — это поднял там же, на битбакете, личный сайт, а на нём — страницу проекта. Я прошу прощения у администрации, поскольку возможно нарушаю правила касательно ссылок, но других идей о размещении у меня нет. На битбакете вы можете оставлять комментарии к коммитам, как и на гитхабе. На личном сайте также можно комментировать — есть виджет от ВК. Предвидя главный вопрос — что же язык может дать — приведу примеры некоторых предложений. 1. Укороченные имена некоторых встроенных типов — например uchar вместо unsigned char или udlong вместо unsigned long long. 2. Адекватные указатели на функции —
3. Возможность дёргать операторы прямо из стрелочного разыменования —
4. Исправленный синтаксис для массивов —
Остальные можно посмотреть в chalkboard. Можете добавлять, можете исправлять, можете ругать и обсуждать, но самое главное — спросите мнения друзей и коллег, может им будет интересно принять участие. Что будет в документе — а значит и в реализациях — решать всем вместе. Смело задавайте вопросы. P.S. Вот тебе и хобби.
0
|
|||||||||||||||||||||||||||||||
| 19.10.2017, 01:35 | |
|
Ответы с готовыми решениями:
30
Что мощнее язык программирования Perl или язык программирования PHP Язык интерфейса Excel 2007 влияет на язык макросов?
|
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
|||||
| 24.10.2017, 19:10 | |||||
|
Добавлено через 2 минуты
0
|
|||||
|
|
||
| 25.10.2017, 08:24 | ||
|
0
|
||
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
||
| 25.10.2017, 17:17 | ||
|
p.s. Java тоже (где-то читал) изначально был "специфичные языки,, привязанные к каким-либо конкретным средам, сферам или задачам". Его придумали "на коленке" для "настройки серверов SUN" маленьким отделом... Это потом его сделали "универсальным".
1
|
||
|
0 / 0 / 0
Регистрация: 18.10.2017
Сообщений: 13
|
|||||||
| 26.10.2017, 03:01 [ТС] | |||||||
|
0
|
|||||||
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
||||
| 26.10.2017, 05:40 | ||||
|
1) это все равно НОВЫЙ ЯЗЫК! Который надо учить. Это стандартный набор проблем - необходимость затратить свободное время и полная несовместимость с другими разработчиками и своими старыми проектами. 2) А еще надо писать новую IDE или плагин под существующие для синтаксиса. Вы готовы предоставить этот плагин? Или IDE? Или надеетесь что мы (потенциальные пользователи языка) напишем его позднее, а пока обойдемся простым текстовым редактором? ...Фреймворк изучается "по ходу работы", в "готовых проектах". Можно для начала "Just for fan" использовать в большом проекте для небольшого редкого функционала (редкой настройки в админке) чтобы оценить преимущества работы. Можно "допиливать" сообществом. Главное преимущество - (IMHO) не надо ПОЛНОСТЬЮ переходить на другой язык, что всегда БОЛЕЗНЕННО! Добавлено через 15 минут В основном это "старички" - С++, ASM, Java, JavaScript (и еще возможно 2-3) которые получают С ГОДАМИ все больше применений благодаря многолетнему опыту их знатоков. Например если я 10 лет работаю на JavaScript, то почему бы на нем не попробовать написать 3Д игрушку? Или мне его очень не хватает для написания простых утилит вроде Bush для автоматизации рутинных операций с файлами? Или мне нужен серверный вариант для создания простых сокетов для моих-же javasript-клиентов. И поэтому появляется Node... Которая много лет сидит в разделе JustForFun для фанатов. Недоработанная, кривая, но уже кое-на-что-способная. Сейчас, когда она начала приобретать популярность, появилась реализация для "окошечных" программ на той-же JavaScript - еще через 5-10 лет возможно появятся полноценные мультиос-программы с формами как замена Java. Это был пример превращения кривого языка для "смены цвета кнопки в браузере" в "швейцарский нож".
0
|
||||
|
|
||
| 26.10.2017, 08:30 | ||
|
Как я и говорил, Вам предстоит огромная работа. В основном с построением правил для препроцессора. Замена названий ключевых слов - ерунда, ради этого многие даже заморачиваться не станут. А вот над принципиально новыми вещами Вам придётся пропотеть.
0
|
||
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
|
| 26.10.2017, 12:39 | |
|
Не по теме: эх... раздразнили... Нашел интересную статейку: https://habrahabr.ru/company/wrike/blog/323550/
0
|
|
|
0 / 0 / 0
Регистрация: 18.10.2017
Сообщений: 13
|
|||||||||
| 27.10.2017, 17:23 [ТС] | |||||||||
|
Вы из того, что новых «универсальных» языков не появилось почему-то сделали вывод, что и никогда не будет, ибо не нужно, хотя ситуация иная — просто имеющиеся языки хорошо делают свою работу и проще их допилить, чем переизобрести.
0
|
|||||||||
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
|||||||
| 28.10.2017, 01:19 | |||||||
|
я смотрю на язык не с точки зрения его удобства, теории или правильности терминов! Я смотрю на него со стороны "школьника", который собирается его учить и пытается понять с чем ему предстоит работать... Когда он выясняет что ему нужно для работы его HelloWord выясняется что для Java необходима "машина" под его Windows, а без него никак... то-же и с .NET. И с точки зрения "заказчика" которому нужна программа - ему плевать на инструменты которыми пользуется программист, но он знает что без скачивания 1-2гб .net он не сможет запустить программку-калькулятор в 100 кб. Или без скачивания JVM на 200Мб не запустить клиент-банк на java... для них это часть языка! Я сужу лишь по истории! За последнее время самым "активным" из новых "универсальных" языков я помню лишь GO, но популярность все еще слабая (бум закочнился, а сообщество не получило критической массы для самоподдержания развития) не смотря на активную поддержку самого Гугла! Да и кому нужны сейчас "универсалы"??? Даже выбирая автомобиль вы не планируете на нем одновременно и девушек соблазнять, и картошку с дачи возить, и в болотных гонках учавствовать... Даже С++ сейчас уже начинает "специализироваться". Почему же Вы пытаетесь сразу "покуситься" на лавры "универсала"? Не по теме:
Озвучьте сначала ваше представление о том кому этот язык нужен/полезен/ценен! Какого вида программы на нем удобно писать? кроме helloWord и школьных задачек по циклам... (почему-то 99% изобретателей языков обычно на этом останавливаются). p.s. C++ не мой язык. Поэтому мне тяжело оценить достоинства ваших модификаций. Хотя я выучил его основы в достаточной мере чтобы написать несколько библиотек к андроиду и несколько консольных утилит. Но когда я его учил, я переходил на него с Делфи! И, помню, сильно матюкался не соответствием привычным begin/end и другим мелочам... Помню что кто-то из профи мне объяснил что С++ настолько гибкий, что небольшими манипуляциями в подключаемой библиотеке можно превратить {} в begin end... Может и "сахар" вашего языка можно воплотить в виде подобных библиотек прямо в С++?
1
|
|||||||
|
|
||||
| 30.10.2017, 09:34 | ||||
)andyj прав, фразочки типа А перед этим напишите, что это вообще будет за язык. Кстати, то, что Вы написали в своём Стандарте, можно спокойно через ту же директиву #define сделать. В отдельном h-файле.
0
|
||||
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
|||
| 31.10.2017, 11:16 | |||
|
И тогда язык превратится в фреймворк, который упростит кому-нибудь жизнь... ...а это уже не новый язык, а фреймворк (аналог "диалекта"/"говора"/"акцента" в разговорном). Недавно узнал что Котлин(новый язык Гугла для андроида) успешно уживается вместе с Java в отдном проекте - часть кода/модуль можно на одном языке написать, а другую на другом... Не по теме: изучая С++ я в свое время отказался от подобного! Хоть Делфи на тот момент был на порядок привычнее(для меня), но есть еще и СТАНДАРТ! Который поддерживается Сообществом(форумы, статьи, чаты, гитхаб-коды/примеры). А значит все хелпы и все вопросы-ответы должны быть на понятном для Сообщества языке! Но с фреймворком есть больше шансов что ваши модификации понравятся сообществу и станут "must have" в любом приличном проекте... или даже познее вольются в "стандартную сборку" компиляторов. p.s. я НЕ против новых языков!!! (сам свой язык изобретаю с перерывами уже >10 лет и аналогов пока не вижу) Просто выработал для себя правила: 1) язык не должен быть "универсальным" или в лучшем случае пополнит огромную коллекцию языков-фриков (http://ordinatus.ru/10-samyx-s... irovaniya/) или навсегда останется "курсовой работой". Сейчас мир фреймворков! ...Java Core занимает меньше 5% от знания программирования андроида и столько-же от знания Spring - от его "универсальности" уже ничего не осталось. Та-же ситуация и в С++. Я выучил ядро C++ и научился писать простые программы и понял что это мне не дает знания Qt или VC++ для написания "окошечных программ". 2) язык должен быть узкоспециализированным и быть ВСТРОЕННЫМ в среду(bash, андроид), программу(1C, фотошоп, корел, маткад) или устройство(чип/робот/кофеварка)! Тогда его будут ВЫНУЖДЕНЫ изучать вместе с окружением. Иначе возникает резонный вопрос "зачем мне учить язык, который никому не нужен и на котором я не смогу заработать или даже облегчить свою работу". (только потому что он проще/удобнее остальных не рождает фанатов, если результат работы языка никому кроме фанатов не нужен) 3) язык не должен сильно нарушать общепринятые нормы ломая сознание программистов! Иначе от него отвернется любое сообщество уже имеещее опыт работы в других языках. Вернее нарушение норм возможно, но "не всех сразу". (мой язык активно использует оператор goto, "от которого отказались все современные программисты", но кроме этого вполне похож на известные языки). 4) язык не должен быть на 99% похожим на другой. Иначе нет смысла создавать клон, с которым будут путаться, возвращаясь к более популярному! (вы изначально ставите себя в проигрышную позицию). Исключение - бесплатный аналог платного языка (Лазарус vs Delphi). 5) создание Сообщества будет ЦЕЛИКОМ на изобретателе языка! Форум, ответы на вопросы, начальное исправление ошибок, примеры, хелпы, учебники... Добавлено через 16 часов 9 минут ...забыл в 4) добавить "исключение №2 - смена специализации (javascript vs NodeJS)"
0
|
|||
| 31.10.2017, 11:16 | |
|
Язык си и windows batch file. Может язык си заменить батник? Интересует запуск из языка си утилиты cmd
Забытый странный язык. "Мертвый" язык язык 1с- это язык??? язык 1С- это язык??? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|