MSElang : обсуждение фишек

Вопросы программирования и использования MSEide + MSEgui.

Модератор: Модераторы

alexey38
долгожитель
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Сообщение alexey38 »

Mikhail писал(а):Фактически это одномерные массивы, просто индексы считаются по другому. Причина в том, что возникает проблема при передаче таких массивов в подпрограммы, что снижает их ценность практически до нуля.

Если есть сложность передачи многомерных статических массивов в подпрограммы, то достаточно запретить передавать такие массивы как параметры в процедурах.
Для меня и задач, которые я решаю ценность статических двухмерных массивов не связана с передачей их в подпрограммы. У меня большинство таких матриц преобразования вообще заданы как константы.
Mikhail писал(а):Чем INTEGER{16} отличается от int16?

Суть одна, но отличие в синтаксисе. В одном случае модификатор 16 пишется слитно, а в другом случае в фигурных скобках. Предлагается 16 воспринимать именно как модификатор (количество бит), а не как имя собственное. И компилятор на int17 должен сказать не неизвестный идентификатор, а то что число 17 нужно заменить либо на 17, либо на 32.

Добавлено спустя 1 минуту 2 секунды:
Kemet писал(а):Во-первых, количеством сущностей : int, int8, int16, int32, int64, int128, против одного integer.

В таком примере цифры после типа можно воспринимать точно также, как модификатор. Выделять ли модификатор в фигурные скобки - это уже дело вкуса, с сути не относящееся.
Mikhail
энтузиаст
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Сообщение Mikhail »

Kemet писал(а):Во-первых, количеством сущностей : int8, int16, int32, int64, int128, против одного integer.


Да столько же Integer{8}, Integer{16}, Integer{32}, Integer{64}, Integer{128}, Integer.

Kemet писал(а):Во вторых, при расширении модификаторов не требуется переопределение языка.


Так и здесь ничего не требуется переопределять типы intXX встроены в компилятор и частью языка не являются.
Kemet
постоялец
Сообщения: 241
Зарегистрирован: 10.02.2010 18:28:32
Откуда: Временно оккупированная территория
Контактная информация:

Сообщение Kemet »

Mikhail писал(а):
Kemet писал(а):Во-первых, количеством сущностей : int8, int16, int32, int64, int128, против одного integer.


Да столько же Integer{8}, Integer{16}, Integer{32}, Integer{64}, Integer{128}, Integer.

Что за чушь? здесь только одна сущность - integer;
Mikhail
энтузиаст
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Сообщение Mikhail »

Kemet писал(а):Что за чушь? здесь только одна сущность - integer;


Нет не чушь. если бы после Integer могло стоять любое число, то сущность была бы одна.
Последний раз редактировалось Mikhail 08.11.2013 19:03:12, всего редактировалось 1 раз.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

Мне не нравится паскалевская идея: Shortint, smallint, longword, т.е. игра слов большой и маленький, с непонятным смыслом без подглядывания в справочник.
Это точно. Именно в справочники. И хочется избавиться от этого как от страшного сна.
Mikhail
энтузиаст
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Сообщение Mikhail »

debi12345 писал(а):Это точно. Именно в справочники. И хочется избавиться от этого как от страшного сна.


Явное указание размера операндов очень слабо вяжется с кроссплатформенным программированием.
Kemet
постоялец
Сообщения: 241
Зарегистрирован: 10.02.2010 18:28:32
Откуда: Временно оккупированная территория
Контактная информация:

Сообщение Kemet »

Mikhail писал(а):
Kemet писал(а):Что за чушь? здесь только одна сущность - integer;


Нет не чушь. если бы после Integer могло стоять любое число, то сущность была бы одна.

В компиляторе я оперирую лишь одной сущностью - целое. Какие-бы модификаторы мы не ставили, целое останется - целым. Тогда как int16, int32, int64 это отдельные штуки, так же как и shortint, longint, hugeint.
Психологически это воспринимается ровно также - одна сущность против нескольких
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »


var int: INTEGER(17);

Очевидно, что модификаторы размерности фиксированы в реализации языка.

Зачем ? А если напрмер хотим ограничить значение до 31 :
unsigned integer{5}
integer from 0 to 31;
integer 0..31;

И почему не использовать синитаксис "from .. to" как базить от которого можно TYPEDEF-ить (= юзать язык а не порождать сущности)?
Этот подход
1) позволяет уйти от выделеняи специального беззнакового типа:

Код: Выделить всё

integer from 0; 

и
2) позвляет задавать точные границы, а не ближайшее 2pwrN.
Mikhail
энтузиаст
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Сообщение Mikhail »

Kemet писал(а): компиляторе я оперирую лишь одной сущностью - целое.


Вам кажется. На самом деле это не так. Вот если есть только Integer, то действительно сущность будет одна.

ИМХО, Вы усложняете. Излишнее обобщение тоже плохо.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

хоть так, хоть эдак у вас получается Си.
Mikhail
энтузиаст
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Сообщение Mikhail »

Лекс Айрин писал(а):хоть так, хоть эдак у вас получается Си.


Верно подмечено. :)
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Есть же в Паскале... еще старом, ограниченные типы. Так пусть каботает компилятор, а не программист.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

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

Прекратсно вяжется - если не нужны некие особо громадные числа. Проктически во всех юзаемых архитектурах есть тип int32bit и его беззнковый брат - и очень редко бывает что их не хватало. Просто С-ки по старой трациции перестраховываются, точнее их к этому обязывет наледие MAKE & ее хэлперов. А так реально огоромное (вплоть до гаджетов) количевов архитктур пддрживаемых LINUX-ом ( = "заводилкой" аппаратуры), под корые делаетя одновременная компиляция.
Хотя ничто не мешает вынести платформенно-зависимый модификатор в отдельное ключевое слово :

Код: Выделить всё

var
 i1: integer as TINY; // = наверное "byte"
 i1: integer as OPTIMAL; // = под размер регистров проца
 i1: integer as HUGE; // = предел компилятора по эмуляции больших чисел
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение hinst »

вы там что ли новый язык делаете? не забудьте сделать чтобы все типы были классами, а не так, чтобы TStringList класс, а Integer не класс и array не класс, или как в жабе: String класс, а int не класс - получается ТУПО
Mikhail
энтузиаст
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Сообщение Mikhail »

hinst писал(а):вы там что ли новый язык делаете? не забудьте сделать чтобы все типы были классами, а не так, чтобы TStringList класс, а Integer не класс и array не класс, или как в жабе: String класс, а int не класс - получается ТУПО


Классы вообще нужно выбросить, за ненадобностью.

Добавлено спустя 4 минуты 7 секунд:
debi12345 писал(а):Прекратсно вяжется - если не нужны некие особо громадные числа.


а если у вас 8-ми битный контроллер?
Ответить