|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.05.2015, 21:20 | #41 | |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
Пусть так. Смысл моего высказывания не меняется: ты хвалишь их отдел маркетинга, а я его ругаю.
Цитата:
Хотел еще про циклы черкнуть, почему их нет в Канторе. Не знаю, где это лучше сделать, в этой теме или в теме про циклы. Угу, как бы половину кода переписывать не пришлось. Многопоточность -- фундаментальная штука, так что выгода от вдумчивого проектирования всё же есть... Сначала написал тут про транзакции в Канторе, но вычеркнул. |
|
02.05.2015, 21:28 | #42 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
И сколько было споров - так поток организовывать аль по другому, все равно истину как таковую до сих пор не уловили до конца. Вон в интернете сколько гиковых статей как "надо" или "не надо" делать. А толку то... Маловато будет. Цитата:
Лан. Завтра продолжу вам моски засирать своими выдумками. Вон оно как - целый блог получился.
I'm learning to live...
|
||
02.05.2015, 21:30 | #43 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
02.05.2015, 21:44 | #44 | |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
Цитата:
— А кто его знает! Люди говорили, в Париж уехал. — А!.. Белой акации, цветы эмиграции… Он, значит, эмигрант? — Сам ты эмигрант… В Париж, люди говорят, уехал. |
|
03.05.2015, 11:30 | #45 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Массивы. Списки.
Цитата:
Так... Списки Как таковых массивов одного типа я не задумывал, они появились позже, но нигде не применялись толком. Основная работа у меня идет с списками и ассоциированными массивами. Каждая переменная как объект имеет свойство, позволяющее внутри ее хранить массив или список. И в теории вложенность массивов или списков не ограничена. Оператор формирования списка: <- Т.е. Код:
Список вариантный. Строгости типов в Алисе нет. Надо признаться что иногда из-за отсутствия строгости бывают несуразицы, но редко. По факту оператор внесения просто дописывает данные в конец списка. Ну понятно что в качестве вносимого могут выступать выражения. Т.е. запись типа: Код:
Обратиться к такому списку можно по индексу элемента. Т.е. a[1] вернет 12. Хоть я и не любитель начала с нуля, но пошел на поводу у Делфи и Си. По факту список - существо одномерное, и задать элементу списка подсписок нельзя. Т.е. это просто не предусмотренно. Пока не требовалось многомерные массивы обрабатывать. Понадобится - допилю. Проход по списку производится циклом (тут scan не приделывал, хотя можно было бы) Код:
Есть правда еще класс list, который призван выполнять то же самое, но я его не развиваю. Ассоциативность проявляется в виде прямого указания ключа и значения элементу списка. Код:
В данном примере с[3] означает фактически "Найти третий элемент списка. Если такого не найдено дописать в конец списка элемент, присвоив ему имя 3" Т.е. по факту это больше справочник чем массив. Массивы Для однотипных массивов есть свои функции:
Имена функции говорят какого типа будут элементы. К ним уже операторы <- и -> неприменимы. Однако цикл (for <итератор> in <объект>) применим вполне. Обращение к элементу в массиве не предусмотрено. Может потом допилю. Это такая область, которая мне не пригодилась пока. Но база для ее развития предусмотрена.
I'm learning to live...
Последний раз редактировалось Stilet; 03.05.2015 в 11:35. |
|
03.05.2015, 12:26 | #46 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Другие ключевые слова.
Список ключевых слов можно продолжить следующими персонажами:
Код:
Необязательный параметр from=<имя файла> заставляет считать результат из файла, и вернуть его в виде строки, даже если это бинарный файл: Код:
В противовес return есть функция result, которая просто возвращает значение без принудительного завершения функции. Код:
Если я не хочу большим кодом напрягать анализатор интерпретатора, зная что он будет выполняться не всегда, а по условию, я выношу его отдельно, а там где нужно приаттачиваю к процессу. По факту происходит банальное считывание файла в строку и скармливание считанного функции (eval). О ней ниже. Код:
format - функция, которая действует на основе StringReplace из делфи, подменяя в переданном ей тексте ВВ теги на некие значения. Идея выдрана у Питона. Аналог вот такого чуда: http://pythonworld.ru/osnovy/formati...od-format.html Код:
Живой примерчик из рабочего модуля: Код:
ВВ теги подменяются реальными значениями и возвращается отформатированная строка. Функция замены подстроки: Код:
Функция перевода вещественного значения в денежное представление: Код:
Алгоритм тут: http://www.programmersforum.ru/showthread.php?t=250384 Ну или вот: http://www.programmersforum.ru/showthread.php?t=134481 Функция переводящая значение типа TDate в строку формата dd.mm.yyyy Код:
Функция форматирования вещественного: Код:
Функция перевода строки в дату: Код:
Функция перевода кодировки в ANSI из UTF Код:
Код:
Код:
Первое означает выравнивание строки символами слева, второе - справа, третье - центрирование строки. В качестве наполнителя могут участвовать не просто символ и целая строка. Идея взята из функций FoxPro: PADL() PADR() PADC() Функция trim. Обрезает пробельные символы в начале или конце строки Код:
Перевод в верхний\нижний регистр Код:
Код:
Длина строки: Код:
Код:
Код:
Основано на TryStrToInt и TryStrToFloat base64 энкодер Код:
Код:
HEX энкодер Код:
Код:
Причем fromhex задуман как сумматор, если в строке закодировано более одного НЕХ значения.
I'm learning to live...
|
03.05.2015, 14:16 | #47 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Еще немного.
Функция копирования подстроки:
Код:
to до какой позиции Length - длину копируемого. To и Length взаимоисключаемы Диагностика кода Код:
functions выводит список методов объекта, что передается параметром members - список переменных программы и их свойств exceptions указывает что все исключения нужно не обрабатывать, а выводить сообщениями на экран. Функция alert. Аналог JS функции по сути. Тот же Месседж Бокс. Эвалюатор: Код:
Функция Код:
Освобождение переменных, уборка мусора: Код:
Функция проверки на отсутствие внутреннего массива переменной: Код:
Тоже редко использую. Вывод в консоль Код:
модификаторы \t и \n как и в Си работают. прерывание циклов: Код:
I'm learning to live...
|
03.05.2015, 14:35 | #48 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Так. Ну шо? Вроде все. Основные моменты описал.
Язык получился простенький, без особых наворотов, но вполне работоспособный. При желании можно на нем уже в текушем состоянии решать достаточно серьезные задачи. Язык написан на Free Pascal, так что лицензировать не требуется. Регистронезависимый. Что еще сказать? Пожалуй про структуру переменных. Во-первых самое главное правило: все переменные ГЛОБАЛЬНЫЕ. Да. Сторонники локализаций, ООП, инкапсуляций и прочего - можете доставать свое венттопливо и готовиться забрасывать меня чем-то типа "Говнокод" "Фууу" "Ату его" "Лови быдлокодера" и прочими вашими любимыми фразочками. А я скажу так: Глобальные переменные как показала практика только выигрыш дали. Если хочется уникальности - давайте соответствующие имена переменкам. По поводу многопотока. Ниче страшного. Можно делать стек переменных кадрами. На новый поток кадр с его локальными переменными + ссылка на основной стек. Но этого я пока делать не буду. Не требуется. Глобальные переменные не такая уж и плохая концепция, и если отдавать себе отчет тому что пишешь помехи не создадут. А все эти стереотипы по поводу "глобальные это плохо" просто напросто навязаны модой ООП, который и сам имеет имеет кучу скелетов в шкафах. Ну раз уж его концепции проталкиваются везде, где надо и не надо пипл, как говорится, хавает. И не думает как лучше писать на самом деле, функционально, обьектами, там паттернами или еще как-то лишь бы в глазах других не упасть. Сколько замечаю многих программистов не интересует насколько правильно они применили те или иные технологии, главное что (вау!) применили суперпупер новое. А это прям "татышо". Это +100500 к карме в ИТ сообществе. Бред... Повестись за эффектом толпы может каждый, для этого ни мозгов ни фантазии не надо. А предки наши без проблем обходились без ООП, и писали то, на чем это ООП написано было потом, вот и стоит думать что это такое - прогресс или модничество. Ладно. Не важно. Глобализация - стандарт языка, и баста. Имена переменных и функции имеют только одно правило - нет пробелам. А так называть можно как угодно. Хоть с цифры в начале, хоть по русски, хоть с какого-то символа типа знака плюс. Лишь бы не было пробелов в имени. Сами переменные (я уже говорил) ябляются объектами, даже если просто хранят скаляр. По факту в их состав входит следующий интерфейс: Value - поле скаляра. Тип Variant Array - Список основанный на TObjectList. FunctionsArray - список методов. Либо назначается по умолчанию системой, допустим есть это предопределенный класс, либо формируется пользователем следующим оператором: Код:
Вот такая вот структура позволила мне использовать саму переменную в циклах и проходах в качестве итератора. На каждой итерации поле Value получает от цикла нужное значение, и переменная используется в теле цикла. Оказалось оч. удобно. Не надо каких то дополнительных итераторов создавать, все переменка делает сама. Ну вот вроде бы и все... Такой вот блог получился скоропалительный. Если кто заинтересуется - милости просим подискутировать. Язык развивается, дописывается. Появляются по мере необходимые новые фички и функции. Так что могу сказать что не зря начал это когда-то лет 6 назад с простой статейки в журнале. Вылилось в вполне полноценный продукт. Кто пишет, написал, или собирается написать свой ЯВУ пожалуйста, пишите, критикуйте и так далее.
I'm learning to live...
Последний раз редактировалось Stilet; 03.05.2015 в 14:42. |
03.05.2015, 14:55 | #49 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
|
03.05.2015, 15:05 | #50 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Конечно можно )
Любые вопросы - милости просим.
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хочу написать программу для себя | Marishka.S | Помощь студентам | 7 | 02.10.2011 17:23 |