В паскале остро не хватает операторов &, &&, | и ||

Общие вопросы программирования, алгоритмы и т.п.

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

Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

Лекс Айрин писал(а):наивысшей формой искусства считается точка на чистом листе

Это невозможно признать наивысшей формой искусства, т.к. скалогрыз дал ясную аксиому: "писать программу нужно не до того момента, когда в неё ничего уже нельзя добавить, а до того момента, когда из неё ничего нельзя убрать". Постольку поскольку, точку можно убрать, то такая программа несовершенна. Соответственно, только чистый лист можно признать совершенной программой и наивысшей формой искусства! :roll:
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

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

Правильно. Самая минимальная программа это точка. До этого лист не может считаться текстом программы.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

Дож писал(а):Можно же не останавливаться на 1 уровне, а пойти и ещё дальше: ошибкой компиляции обязать везде ставить скобки! Например, для выражений вида a * b + c выдать неаккуратному программисту «Fatal Error: Ambiguous operators order.»

чтобы таких ошибок избегать, используют обратную польскую запись/нотацию
;)

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

В Си операцией считается то, что в паскале не считается операцией.
Например, получение элемента из индекса массива или вызов функции.

Опять же в паскале, присваивание это выражение, а не операция как в си. (любимый патрон новичков if (c = 1) {...} )
В паскале почти нет унарных операций ( if not a then ... )
И пока что нет тринарного ? .. : ..

Но при этом язык, в техническом плане Си не уступает. (т.е. задачи решаемые на Си и на Паскале, одни и те же)

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

Дож писал(а):И как там, здорово писать программы на ассемблере?

до сих пор же пишут... почему-то. Или нет?
а ещё хуже, пишут ассеблерные реализации кусков алгоритма, в тех случаях, где возможности компилятора либо не дотягиваю.
Тут действительно вопрос в эффективности, и очень часто вопрос в эффективности исполнения операций.
(для fpc в частности это довольно больное место, которое последнее время получает всё больше и больше внимания)
Последний раз редактировалось скалогрыз 17.04.2017 19:12:04, всего редактировалось 1 раз.
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

до сих пор же пишут... почему-то. Или нет?

Правильно ли я понял вашу позицию: «кто-то программирует ассемблерные вставки в 2017 году, и при этом не ноет, следовательно язык с одним приоритетом операторов лучше языка с несколькими приоритетами»?
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

Лекс Айрин писал(а):Самая минимальная программа это точка. До этого лист не может считаться текстом программы.

Отсутствие программы - это отсутствие чистого листа, а точка это уже наисложнейшая программная единица, с помощью которой можно выразить меньше чем сказано в чистом листе. Соответственно, чистый лист - это идеальная программа и наивысшая форма искусства! :roll:
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

Дож писал(а):Правильно ли я понял вашу позицию: «кто-то программирует ассемблерные вставки в 2017 году, и при этом не ноет, следовательно язык с одним приоритетом операторов лучше языка с несколькими приоритетами»?

разумеется это неправильное обобщение.
Правильно понимать вот так: "кто программирует и не ноет, тот молодец"

И согласно документации на FPC, там их 4 уровня.
фактически, то что совпадает с школьной прогаммой математики + сравнения.
Mirage
энтузиаст
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia
Контактная информация:

Сообщение Mirage »

Если программируешь на нескольких языках, то запоминать какие там уровни приоритетов и т.п. как-то не улыбается. Так что все, что выходит за рамки школьной программы идет нафиг и заменяется скобками, которые дальновидно в эту самую программу включены.
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

vitaly_l писал(а):
Лекс Айрин писал(а):наивысшей формой искусства считается точка на чистом листе

Это невозможно признать наивысшей формой искусства, т.к. скалогрыз дал ясную аксиому: "писать программу нужно не до того момента, когда в неё ничего уже нельзя добавить, а до того момента, когда из неё ничего нельзя убрать". Постольку поскольку, точку можно убрать, то такая программа несовершенна. Соответственно, только чистый лист можно признать совершенной программой и наивысшей формой искусства! :roll:

А ещё художником обзываетесь!
Наивысшая форма искусства - пустота, лист нужно тоже убрать! Абсолютная, ничем не замутнённая пустота - наивысшая форма искусства!

А теперь к нашим баранам.
Всякие свистелки и перделки жаждут внести прибежавшие в Паскаль со всяких дурдомо-языков.
Этот дурдом в голове они жаждут привнести в Паскаль. :mrgreen:
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

sign писал(а):Всякие свистелки и перделки жаждут внести прибежавшие в Паскаль со всяких дурдомо-языков.
Этот дурдом в голове они жаждут привнести в Паскаль. :mrgreen:


Да, истинный паскалист должен пользоваться исключительно изначальной версией языка, предложенный Виртом, и отвергнуть с негодованием все гнусные привнесенности извне, типа объектов любого вида, строк, резиновых массивов и всякой похабщины, под которой можно понимать всякие неканоничные функци asin, acos, tanh. :D
А так то руководитель бывший борландовского паскаля спятил и в сумашествии своем создал ужасающее -- си шарп. Потому что над паскалем надругаться не дали. :mrgreen:
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

sign писал(а):Наивысшая форма искусства - пустота, лист нужно тоже убрать! Абсолютная, ничем не замутнённая пустота - наивысшая форма искусства!

В природе - невозможно добиться ничем не замутнённой пустоты. Даже идеальный вакуум - далеко не идеальная пустота, потому что там всегда присутствует какая-то хрень. Соответственно: ничем не замутнённая пустота - это и есть чистый лист. Потому что только на чистом листе можно создать, произведение искусства под названием: "Абсолютная, ничем не замутнённая пустота" т.к. в природе такое технически невозможно. Именно поэтому чистый лист - является наивысшей формой искусства, в то время как "Абсолютная, ничем не замутнённая пустота" - является мифом, который Вы "нарисовали" на чистом листе. Я надеюсь Вы понимаете что, Ваш обыкновенный Миф - не может являться наивысшей формой искусства?

sign писал(а):Всякие свистелки и перделки жаждут внести прибежавшие в Паскаль со всяких дурдомо-языков.
Этот дурдом в голове они жаждут привнести в Паскаль.

SSerge писал(а):отвергнуть с негодованием все гнусные привнесенности извне, типа объектов любого вида, строк, резиновых массивов и всякой похабщины

А касаемо вопроса топик стартера, ИМХО: насколько я понимаю Паскаль вначале всегда проверяет побитово, а потом сверяет результаты побулево. И если программист заранее знает что в скобках между and-ами находятся булевые, то вполне логично что, у него появится возможность проверять сразу на побулевые операции, нежели вначале на побитовые, а затем на побулевые (как сейчас это делает компилятор). Так что, вполне возможно, что добавление оператора, ещё и ускорит работу программы. Что думаете?
Последний раз редактировалось vitaly_l 18.04.2017 08:19:52, всего редактировалось 1 раз.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

vitaly_l писал(а):у него появится возможность проверять сразу на побулевые операции, нежели вначале на побитовые, а затем на побулевые


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

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

vitaly_l писал(а):"Абсолютная, ничем не замутнённая пустота" - является мифом.


Ты только что обозвал мифом Абсолют...
А если серьезно, то программа не выполняющая своих задач не является программой.
vitaly_l писал(а): Так что, вполне возможно, что добавление оператора, ещё и ускорит работу программы. Что думаете?


Скорее, работу компилятора.
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

SSerge писал(а):Та же самая битовая арифметика, ибо boolean ничем для процессора не отличается от short int

Это понятно, но ИМХО, в задаче if (a>b+с) and (c-a<d) then - вначале программа вычисляет скобки и записывает в память булевые true или false и затем сравнивает результаты. В то время как, если бы заранее было известно что, там булевые, то, программа сразу бы сравнила два числа и всё. Понимаете?

Вот пример в нём скобок нет, т.к. операции булевые. Обратите внимания, СКОБОК НЕТ:

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

if true and false then ShowMessage('Юмор!');  


Скобки ставятся, чтобы программа не путалась в операторе and, как в этом примере:

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

if (a > 0 and b) > 0 then


Добавлено спустя 1 минуту 111 секунд:
Лекс Айрин писал(а):Ты только что обозвал мифом Абсолют

То что кто-то, обозвал Миф - абсолютом, ещё не значит что он им стал.
Последний раз редактировалось vitaly_l 18.04.2017 08:44:15, всего редактировалось 1 раз.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

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

vitaly_l писал(а):То что кто-то, обозвал Миф - абсолютом, ещё не значит что он им стал.


смотря для кого.
vitaly_l писал(а):Это понятно, но ИМХО, в задаче if (a>b+с) and (c-a<d) then - вначале программа вычисляет скобки и записывает в память булевые true или false и затем сравнивает результаты.


Имхо, слишком сложные условия, чаще всего, говорят о неправильном подходе...
Кстати, в условии (a > 0 and b) > 0 нет смысла ставить скобки в этих местах... боюсь, что компилятор скажет "Упс!" и откажется работать далее.
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

Лекс Айрин писал(а):Кстати, в условии (a > 0 and b) > 0 нет смысла ставить скобки в этих местах... боюсь, что компилятор скажет "Упс!"

Так об этом и речь!!! Скобки ставятся, исключительно для того чтобы выражение:

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

if a > 0 and b > 0 then

понималось компилятором, вот так:

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

if (a > 0) and (b > 0) then

а не вот так:

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

if (a > 0 and b) > 0 then

а вот здесь скобок нет:

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

if true and false then ShowMessage('Юмор!');  
Ответить