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

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

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

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

Сообщение vitaly_l » 17.04.2017 19:47:30

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

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

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

Сообщение Лекс Айрин » 17.04.2017 19:55:15

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

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

Сообщение скалогрыз » 17.04.2017 19:56:33

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

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

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

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

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

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

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

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

до сих пор же пишут... почему-то. Или нет?
а ещё хуже, пишут ассеблерные реализации кусков алгоритма, в тех случаях, где возможности компилятора либо не дотягиваю.
Тут действительно вопрос в эффективности, и очень часто вопрос в эффективности исполнения операций.
(для fpc в частности это довольно больное место, которое последнее время получает всё больше и больше внимания)
Последний раз редактировалось скалогрыз 17.04.2017 20:12:04, всего редактировалось 1 раз.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Дож » 17.04.2017 20:07:18

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

Правильно ли я понял вашу позицию: «кто-то программирует ассемблерные вставки в 2017 году, и при этом не ноет, следовательно язык с одним приоритетом операторов лучше языка с несколькими приоритетами»?
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

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

Сообщение vitaly_l » 17.04.2017 20:08:32

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

Отсутствие программы - это отсутствие чистого листа, а точка это уже наисложнейшая программная единица, с помощью которой можно выразить меньше чем сказано в чистом листе. Соответственно, чистый лист - это идеальная программа и наивысшая форма искусства! :roll:
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение скалогрыз » 17.04.2017 20:13:57

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

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

И согласно документации на FPC, там их 4 уровня.
фактически, то что совпадает с школьной прогаммой математики + сравнения.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Mirage » 18.04.2017 01:42:43

Если программируешь на нескольких языках, то запоминать какие там уровни приоритетов и т.п. как-то не улыбается. Так что все, что выходит за рамки школьной программы идет нафиг и заменяется скобками, которые дальновидно в эту самую программу включены.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

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

Сообщение sign » 18.04.2017 07:07:37

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

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

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

А теперь к нашим баранам.
Всякие свистелки и перделки жаждут внести прибежавшие в Паскаль со всяких дурдомо-языков.
Этот дурдом в голове они жаждут привнести в Паскаль. :mrgreen:
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

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

Сообщение SSerge » 18.04.2017 08:25:56

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


Да, истинный паскалист должен пользоваться исключительно изначальной версией языка, предложенный Виртом, и отвергнуть с негодованием все гнусные привнесенности извне, типа объектов любого вида, строк, резиновых массивов и всякой похабщины, под которой можно понимать всякие неканоничные функци asin, acos, tanh. :D
А так то руководитель бывший борландовского паскаля спятил и в сумашествии своем создал ужасающее -- си шарп. Потому что над паскалем надругаться не дали. :mrgreen:
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

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

Сообщение vitaly_l » 18.04.2017 09:03:57

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

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

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

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

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

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

Сообщение SSerge » 18.04.2017 09:19:24

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


вместо того, чтобы гадать, откомпилируйте в ассемблерный код и посмотрите, что там действительно делается. И, по сути, нет никаких "побулевых" операций. Та же самая битовая арифметика, ибо boolean ничем для процессора не отличается от short int
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

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

Сообщение Лекс Айрин » 18.04.2017 09:20:19

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


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


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

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

Сообщение vitaly_l » 18.04.2017 09:26:08

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 09:44:15, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение Лекс Айрин » 18.04.2017 09:43:21

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


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


Имхо, слишком сложные условия, чаще всего, говорят о неправильном подходе...
Кстати, в условии (a > 0 and b) > 0 нет смысла ставить скобки в этих местах... боюсь, что компилятор скажет "Упс!" и откажется работать далее.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение vitaly_l » 18.04.2017 09:49:03

Лекс Айрин писал(а):Кстати, в условии (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('Юмор!'); 
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru