|
53 / 7 / 1
Регистрация: 06.10.2020
Сообщений: 221
|
||||||
Можно ли так "издеваться" над map?24.09.2021, 20:05. Показов 1800. Ответов 5
Метки нет (Все метки)
Я пишу свой язык программирования и хочу добавить туда нормальные переменные, а не адреса оперативной памяти. Написал такой вот небольшой код, который определяет ключ как пару целочисленное - строка а значение как у той переменной которая объявляется:
первый int - это ключ области видимости (в глобальной области видимости он равен 0, но если будет объявлен в одних фигурных скобках, то уже ключ будет равен 1, если внутри скобок будут тоже скобки то ключ уже будет 2 и так далее... ну как в обычном ЯП с C-подобием) строка - имя переменной, к которой идет обращение. второй int - само значение переменной (просто это объявление для целочисленных переменных, он может быть каким угодно) Так вот, подскажите, эта конструкция будет идеальной для переменной или нет. Вроде компилируется, но такое чувство что эта штуковина будет очень криво работать т. к. придется еще и указывать область видимости, в которой создана переменная, а параметр области будет у меня меняться от скобок, то будет 0, то 2, может вообще 100. как не указывая ключ обращаться к переменной?
0
|
||||||
| 24.09.2021, 20:05 | |
|
Ответы с готовыми решениями:
5
Рекурсия: можно ли разместить предметы в контейнерах так, чтобы груз не выступал над контейнером? При переносе кнопки над элементами, можно ли узнать над каким элементом переносишь? Что не так со статическими map-ами |
|
Гвоздь Задиров
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
|
|||||||
| 25.09.2021, 13:28 | |||||||
|
В плюсах - насколько я это понимаю(не буду утверждать что всё именно так, могу ошибаться) - немножко всё не так. Все эти безымянные блоки на самом деле не очень-то безымянные. Через это каждая переменная имеет уникальное (полное) имя:
Попробуй отсюда отталкиваться. Ну и XLAT уже ж предлагал Как создать область видимости в самодельном языке программирования? По сути и получается некий стек объектов типа namespace; вход в новую область - на верху стека создаётся объект, в котором создаются переменные этой области и определяются ссылки на нужные внешние переменные. Выход из области - верхушка удаляется нафиг вместе с содержимым и нет нужды хранить глубину или ещё что-то.
0
|
|||||||
|
53 / 7 / 1
Регистрация: 06.10.2020
Сообщений: 221
|
|||||||||||||||||||||
| 25.09.2021, 15:08 [ТС] | |||||||||||||||||||||
|
Folian, я уже сделал один прототип решения данной задачи:
Добавлено через 11 минут О том как будет объявляться переменная: 1. Идет обращение к команде взаимодействия с переменными (то есть $) 2. Выбирается тип переменной (int) 3. Вводится значение самой переменной (допустим 1024) 4. создается переменная с помощью этих двух команд:
Добавлено через 3 минуты ...Хотя я тут подумал, а зачем мне делать свой язык? За всё это время можно выучить C# и уйти в геймдев чтобы не морочить голову...
0
|
|||||||||||||||||||||
|
Гвоздь Задиров
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
|
||
| 25.09.2021, 19:22 | ||
|
А коль получится что-то более или менее законченное - уже будут свои красивые исходники и (а чем чёрт не шутит) возможно окажется что оно, при лёгкой обработке напильником, сможет быть полезным для решения чего-либо в три строки. В любом случае исходники и опыт не пропьёшь
0
|
||
|
53 / 7 / 1
Регистрация: 06.10.2020
Сообщений: 221
|
|
| 25.09.2021, 21:20 [ТС] | |
|
Folian, хм, а если попытаться сделять ЯП, который будет предназначен только для создания игр? По идее в нем максимум должно быть что-то похожее на ООП, но чуть полегче, типа создал объект внутриигровой и когда с этим объектом что то происходит, то он будет легко изменяться... В принципе можно попробовать сделать небольшой движок на c++, интегрировать туда сам язык и на нем уже делать игру. Или же можно написать фреймворк для плюсов, где будет упрощена работа с памятью, указателями и объектами. Хотя я и не умею писать в стиле ООП, но можно попробовать написать максимально аккуратный фреймворк и уже при помощи него создавать хорошие программы...
Да и тем более как кажется фреймворк создать проще чем отдельный язык, ведь то, чтобы язык правильно работал ему нужно дополнительно написать логику выполнения действий, объявления, инициализацию и прочее. А в плюсах этого делать не нужно и можно сконцетрировать весь процесс на добавление новых функций для языка. Можно написать альтернативу ООП, графику, да что угодно! Только вот вопрос, с чего начинать?
0
|
|
|
Гвоздь Задиров
1718 / 1117 / 337
Регистрация: 25.01.2019
Сообщений: 2,940
|
|||||
| 25.09.2021, 22:10 | |||||
Сообщение было отмечено Aleksey_1024 как решение
РешениеКогда-то таким занимался - это тоже очень интересное. А если потом обернёшь в формочки и прикрутишь свой Ну эт всё чисто моё видение, я не настаиваю ни на чём.
0
|
|||||
| 25.09.2021, 22:10 | |
|
Помогаю со студенческими работами здесь
6
Что не так, из-за чего не работает метод map?
Можно ли приготовить Map/Dictionary? Можно ли реализовать Map от своего класса? сегодня так можно сказать праздник так что... Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|