Объединение переменных и битовые поля как в С++ UNION


#43

Ничего подобного, применить красиво можно всё. К примеру я видел как таким образом получали хешкод из single. Кроме того, как ни крути, но формат файлов вроде шрифтов никуда не денется, а его на несколько порядков легче читать с такими записями.

Но вот побитовые поля я на практике не разу не встречал. Ну и не странно, если верить тому что выше написали, что они для компоновки данных перед передачей по сети использовались. Что в отличии от шрифтов не имеет общих форматов всюду.


#44

так я вообще могу на языке С++ все что мне нужно написать, это же не асм где код примитивных вещей растягивается в поэмы…)) Я, считаю, что язык который ставят в школах в пример должен быть достойным для рассмотрения, а когда в нем что то нужно брать из других языков, это уже “винегрет”, хотя CLR это и есть vinegret, и именно по этому так как CLR позволяет писать на любом языке одно и тоже, ТО любой язык использующий CLR должен соответствовать стандартам. (ну ладно про UNION я загнул - его в С# НЕТ, НО Я ДУМАЮ ОН ПОЯВИТСЯ). Так вот я имею право выбирать на каком мне языке разговаривать с “БОГОМ”, молитвы могут звучать на разных языках но выполнять одно и тоже (молить = просить) , отличий практически нет, символы другие, а смысл тот же…)) факт! А. тут нет… нужно создать препятствия, в место того чтоб совершенствовать интерпретацию. короче как то все не серьезно…


#45
begin
  ReadArrInteger
  .OrderBy(r->abs(r-5))
  .ThenBy(r->r)
  .Println;
end.

Запишите ка эту строчку кода (которую я на 4 разложил для читабельности) в С++, меньше чем 30 строчками. А потом рассказывайте как там код не растягивается)))

Сложение там не сложнее записывается, да… Но в сложных ситуациях Linq даёт сэкономить тонны кода, при этом ещё и увеличив их понятность.

Да и кроме того, в C++ конечно не всё так плохо как в JavaScript, но говнокод там всё же приходится писать время от времени.

Назовите мне хотя бы 1 известный проект в программировании, который бы не использовал хотя бы 5 разных языков в перемешку. Это хорошая практика. А ждать что 1 язык решит абсолютно каждую задачу уже нет.

PascalABC.Net хорош чтоб по простому записывать сложные вещи.
C++ хорош для низкоуровневых конструкций (считая его возможность ассемблерных вставок).

Если попробовать использовать их наоборот, то есть записывать что то сложное в C++, или низкоуровневое в паскале - получаете говнокод. Так что они очень совместимы и дополняют друг друга.

Если бы он и появлялся - то как сахар в самом C#. Но это не возможно реализовать красиво через IL, поэтому вряд ли.

И надеяться мало, пока вы не нашли информации от разработчиков что это в плана. Вы только дезинформируете себя этими надеждами. Кстати эту инфу легко найти, и последний раз когда я смотрел - там и близко такого не было.

Вас снова не туда понесло.

  1. Разработчики паскаля это препятствие не создавали, это техническое ограничение в платформе, поверх которой строится паскаль.
  2. Кто что создал? Его наоборот никогда небыло. Разница большая.

#46
это:
   ReadArrInteger.OrderBy(r->abs(r-5)).ThenBy(r->r).Println;
на PascalABC не завилось.

Вижу вас зацепило, но альтернативу UNION вы так и не привели. А, какой у меня стиль программирования, это моя уникальность, вы же даже как китаец похожем не можете быть но хотите, чтоб все думали как вы, иначе самолюбие не позволяет чувствовать превосходство, да? привыкли чувствовать себя как рыба в воде по расставленным ограничениям, усилием создания мысленных преград. и мозг мне тут выносите, в место того чтоб показать альтернативный пример UNION. А, примеры типа AND, OR, XOR или смещение и тд есть в любых языках, так что пример как альтернатива UNION должен быть достойным, а где я его буду использовать это касается только меня и логики моих идей. Создай тему, делимся идеями, шагаем дружно в 21 век, может кто нибудь и откликнется…))))))))))) и не отвечайте на всякую хрень множеством сообщений, если эта хрень не относится к теме.


#47

PascalABC это не позволяет, в отличие от PascalABC.NET. Тем более, зачем говорить о первом, если он уже давно не поддерживается?


#48

Альтернативу - привёл. Вам не нравится - не мои проблемы.


#49

Дополнение в виде статьи:

Возможно, кому-нибудь, да пригодится.


#50

ничего нет не возможного! условно, языки высокого уровня - это функции написанные на языках низкого уровня. кто мешает создать метод на С# со смещением который уже есть в С# (ну то что мы обсуждали, массив имеет одну память с переменной- это уже есть на С#) и прикрутить в этот метод операции работы с битами. К примеру создать библиотеку работы с битами, в которой будет переменная бит, пусть даже хранится временно в байте, но при добавлении использует перегруженные операторы + - и тд. Короче, кто говорит не возможно, тот или хитрит или реально не подлежит вниманию. Мало быть специалистом, нужно еще креативно мыслить, и тогда все будет возможно, остальное просто путь, дорога.


#51

ну вообще то он у меня на Win10x64 и стоит. возможно какую то библиотеку нужно подцепить?


#52

Если мы говорим про PascalABC.NET, то покажите причину по которой

. Можно скрином.


#53

image


#54
begin
  ReadArrInteger(5)
  .OrderBy(r->abs(r-5))
  .ThenBy(r->r)
  .Println;
end.

@Sun_Serega, у Вас куда-то делся параметр n для ReadArrInteger.

@MagDest, выше код рабочий.


#55

ЗАВЕЛСЯ НО НИЧЕГО НЕ ВЫДАЛ

image


#56

А Вы массив ввели?


#57

что он хоть делать должен?

компилятор молчит. запрос на ввод не дает, просто запущен без ошибок и все.

МЕНЯ ЗАБАНИЛИ НА 20 часов. ПИШУТ ТИПА МНОГО ПИШУ…)) хрень какая то. ЗАТО СВОИ СООБЩЕНИЯ МОГУ РЕДАКТИРОВАТЬ…))

ВОТ ЧТО ПИШЕТ, ОШИБОК НЕТ. ПРОСТО все пусто.


#58

ReadArrInteger(n: integer) - читает массив из n целых чисел с клавиатуры. Просто вводите числа, после каждого нажимая Enter.

А суть всего кода:

  1. Чтение массива длиной в 5 целых чисел.
  2. Сортировка чисел по ключу, вычисляемому так: Abs(x - 5), где x - какое-то число.
  3. Дополнительная сортировка.
  4. Вывод.

@MagDest, Вы знакомы с Linq?


#59

В уме компилировал)) Вообще там надо поставить не константу а ReadlnInteger, чтоб длина массива тоже вводилась.

Отсортировать все числа в таком порядке:
5 4 6 3 7 2 8 1 9 и т.д.
При чём то что 4 идёт перед 6 - это тоже часть правила.
(именно такой вывод будет если ввести все числа от 1 до 9. но это только пример порядка сортировки в результате, числа не должны быть подряд чтоб оно так сортировалось)


#60

Внутренней ошибки компилятора не было случайно? :slight_smile:


#61

меня заблокировали на 20 часов, по этому не смог ответить сразу. пример запустил. блокировался антивирусом, автоматом запускал в контейнере, пока контейнер не отключил - результата не было.


#62

Эта программа использует только простейшие стандартные библиотеки и ввод/вывод, который в паскале реализован через System.Console. Если у вас такое блокирует антивирус - поставьте другой.