Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Священные войны Concurrency в разных языках и библиотеках https://www.cyberforum.ru/ holywars/ thread1485911.html
Я тут на ЛОРе немного участвую в одном обсуждении, не связанном с темой, но этот вопрос был затронут, и я сделал небольшое сравнение "лёгких" тредов Racket и горутин: #lang racket (define NCHANNELS 100) (define NTHREADS 100000) (define channels (for/vector ((i (in-range NCHANNELS))) (make-channel))) (define rand-gen (make-pseudo-random-generator))
Являются ли все языки программирования диалектами C++? Священные войны
Листая очередной раз форум, наткнулся на фразу Учитывая что бейсик это такой диалект C++ В связи с чем хочу задать вопрос уважаемому Fulcrum_013 - а не является вообще каждый язык, созданный или только ждущий, пока его изобретут, диалектом C++ ? Однако это явно выходит за рамки темы выбора между C# и C++, да и вопрос холиварный, поэтому задам я его в отрыве от того треда и соответствующем...
Священные войны SCRUM vs KANBAN vs SCRUMBAN Обсудим три знаменитые методологии разработки. Какие преимущества, недостатки? По какой методологии вы работаете? https://www.cyberforum.ru/ holywars/ thread1483588.html Священные войны Какой Бейсик лучше? https://www.cyberforum.ru/ holywars/ thread1477161.html
Собираюсь начать учить Visual Basic. Правда что самый лучший редактор для него это Visual Studio Community? Если да, то 2015 года для Visual Basic 6.0 подойдет?
Священные войны Почему на рынке труда спрос на програмистов С++ существенно ниже чем на С#?
Скажите пожалуйста, почему спрос на рынке труда существенно ниже на погромистов С++, в то время как всяких там Java и C## кодеров с руками отрывают?
Священные войны D vs C++ (3) Продолжение темы https://www.cyberforum.ru/ holywars/ thread1458150.html
Священные войны Skype, Viber и все-все-все Предлагаю устроить холиварчик на эту тему. Кто, что использует и почему? Скайп использую сугубо по необходимости, ибо некоторые люди, с которыми необходимо держать связь сидят только в нем. Если бы не это - не использовал бы. Почему? 1) Он немного тормознутый ( сужу по запуску на андроиде) 2) При регистрации в скайпе нужно умудрится зарегистрировать именно учетную запись скайп, а не... https://www.cyberforum.ru/ holywars/ thread1454638.html Священные войны Common Lisp vs D (2)
Продолжение темы.
Священные войны Каково это - работать программистом в офисе? На начальном - среднем уровне, на высокоуровневных языках .Net, Java или других... Участие в разработке корпоративных систем или узкоспециализированного ПО... Интересная ли это работа? Вычитал у Фленова на сайте, что работа эта не очень интересная и по началу вообще будут давать только искать ошибки в коде, что работать тем же сис админом лучше чем программистом. Как проходят собеседования и... https://www.cyberforum.ru/ holywars/ thread1445844.html Священные войны Чем опасны пиратские версии Windows? Чем опасны пиратские версии Windows? Ну помимо очевидного что пиратскую программу использовать незаконно, чем они опасны? может дыры какие в безопасности могут быть через которые вас могут взломать, или какие данные с вашего компа могут отправлять пиратам или еще чем? https://www.cyberforum.ru/ holywars/ thread1438186.html
Java или C# Священные войны
Вот просто интересно, что лучшие учить Java или C#, если JAVA то можно писать под Android, а вот C# очень удобно под Windows, что более преспективней ?
Священные войны Чего вам не хватает в языке C#? Добрый день! Чего вам не хватает в языке c#? Какие фичи хотели бы добавить? https://www.cyberforum.ru/ holywars/ thread1430534.html
Модератор
5048 / 3277 / 526
Регистрация: 01.06.2013
Сообщений: 6,807
Записей в блоге: 9
0

Нужна ли валидация чисел встроенная в язык? - - Ответ 7816284

28.06.2015, 15:06. Показов 1260. Ответов 37
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Т.е. в описании типа указывается условие валидности, и это условие проверяется, обычно при присваивании значения переменной или аргументу функции. Чаще всего используется проверка на попадание в границы диапазона - Range checking или Bounds checking, хотя, условие может быть любым. Проще показать примеры на языках, где такая проверка встроена.
Ада
Кликните здесь для просмотра всего текста
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
WITH Ada.Text_IO;            USE Ada.Text_IO;
 
PROCEDURE Main IS
    TYPE Range20 IS RANGE 1..20;
    a,b,c: Range20;
    FUNCTION foo (x:Range20) RETURN Range20 IS
    BEGIN
        RETURN x / 2;
    END; 
BEGIN
   a:=18; b:=15; c:=19;
   a:=a+b-c; -- Промежуточный результат может выходить за пределы.    a:=a+b выкинуло бы исключение
   IF a+b > 22 THEN --  и тут проверки нет, потому что нет присваивание переменной
        Put_Line (Range20'Image (a+b)); -- Странно, но, по сути, При присваивании аргументу встроенной ф-ии проверки нет
        Put_Line (Range20'Image (foo(a+b))); -- Вот теперь исключение
   END IF;
END Main;
Результат работы :
Кликните здесь для просмотра всего текста
29
raised CONSTRAINT_ERROR : main.adb:15 range check failed
- заметим, что Ада конкретизировала строчку, где была ошибка. Правда, если это исключение перехватить, то, кажется, эта информация потеряется (я плохо знаю Аду, могу ошибиться).
Delphi
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
program ConsoleTest;
 
{$APPTYPE CONSOLE}
 
{$R *.res}
 
uses
  System.SysUtils;
 
type Range20 = 1 .. 20;
var
  a,b,c:Range20;
 
function foo(x:Range20): Range20;
begin
    Result:= x div 2;
end;
 
begin
{$R+} // включаем Range checking
//  try
   a:=18; b:=15; c:=19;
   a:=a+b-c; // Промежуточный результат может выходить за пределы.    a:=a+b выкинуло бы исключение
   if a+b > 22 then begin //  и тут проверки нет, потому что нет присваивание переменной
        Writeln (a+b); // Странно, но, по сути, При присваивании аргументу встроенной ф-ии проверки нет
        Writeln (foo(a+b)); // Вот теперь исключение
   end;
{  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end; }
end.
- - Почти то же самое (в данном случае).
Результат работы :
Кликните здесь для просмотра всего текста
29
Exception ERangeError in module ConsoleTest.exe at 0001C42C.
Range check error.
- в отличии от Ады, вместо номера строки в файле шестнадцатеричная цифирь.
Но, по крайней мере, не нужно вставлять своих проверок в код.
(Следует отметить, что только Ада производит валидацию выражений, до которых может дотянуться, в compile-time.)
На С++ можно соорудить проверку, например, так http://stackoverflow.com/quest... types-in-c
Правда, не будет имени и номера строки вызвавшей ошибку. Можно проверять ручками вписывая макросы assert (_ASSERT).
Подобную проверку, без ручной вставки функций, на Haskell (и скорее всего на всех ML языках), кажется, сделать нельзя. Haskell
Кликните здесь для просмотра всего текста
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 
class NumValidator a where -- класс типов для валидации
    chk:: String -> a -> a
 
-- Тип для которого будем контролировать попадание в диапазон
newtype MyRange = MyRange { unMyRange :: Int }  
  deriving (Eq, Ord, Show, Num)
 
instance NumValidator MyRange where
    chk msg a@(MyRange v)
        | 0 <= v && v <=9 = a  -- проверка попадания в диапазон
        | otherwise = error $ msg ++ " : MyRange range check failed"
 
-- Тип для которого будем контролировать чётность
newtype MyEven = MyEven { unMyEven :: Int }
  deriving (Eq, Ord, Show, Num)
 
instance NumValidator MyEven where
    chk msg a@(MyEven v)
        | even v = a   -- проверка
        | otherwise = error $ msg ++ " : Not even number"
 
main = do
    let x = MyRange 5
        y = MyRange 7
        z = chk "set z" $ y - x
    print $ chk "x + 9" $ MyEven (unMyRange x) + MyEven 9 
    print $ chk "x - y + 3 * z" $ x - y + MyRange 3 * z
    print $ chk "x + y" $ x + y
Результат работы :
Кликните здесь для просмотра всего текста
MyEven {unMyEven = 14}
MyRange {unMyRange = 4}
MyRange {unMyRange = *** Exception: x + y : MyRange range check failed
Конкретизирую: речь идёт об «автопроверках» зависящих только от одного аргумента – проверяемого значения и расставляемых компилятором в коде по некоторым правилам. Границы диапазона и подобное жёстко задаются в исходном коде. Да, такие проверки, скорее нужны в программах жёстко привязанных к версии железа. В дровах, во встраиваемых системах (число разделяющихся боеголовок фиксировано), в микроконтроллерах. Однако, нужны языки и для таких задач. Однако, в большинстве языков (насколько я знаю) таких проверок нет. Включая и свежевылупившийся rust. А большинство создателей языков … ну ладно не большинство, но многие, не полные идиоты. Видимо есть причина, почему мода на Bounds checking прошла?
p.s. Проверки на выход индекса за границу массива, или другого индексируемого контейнера, встречается в более многих языках. Я не об этом.

Вернуться к обсуждению:
Нужна ли валидация чисел встроенная в язык? Священные войны
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2015, 15:06
Готовые ответы и решения:

Какая существует встроенная функция в masm32 для сравнения чисел?
У меня есть код, в котором происходят вычисления Y и нужно найти такое значение Х при котором...

Валидация чисел на Ruby
Здравствуйте. Подскажите пожалуйста как на руби сделать валидацию. Допустим я ввожу число и мне...

Нужна подсказка (язык программирования любой)
H. Футбольные ставки ограничение по времени на тест:1 секунда ограничение по памяти на тест:128...

Где достать язык двоичных чисел.
Все говорят что ассемблер, можно считать маш кодом, я и не спорю, а где взять настоящий язык маш...

37
28.06.2015, 15:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2015, 15:06
Помогаю со студенческими работами здесь

Задача на циклы! Язык Си++! определить количество разных чисел
Определить количество различных чисел, которые содержатся в числе N? ( это число мы вводим с...

программа, которая из массива чисел (например из 5) выбирает минимальное число. Язык С++.
Помогите составит программу, которая из массива чисел (например из 5) выбирает минимальное число....

Язык интерфейса Excel 2007 влияет на язык макросов?
Здравствуйте. Думаю что нет, но лучше спрошу. Влияет ли язык интерфейса Excel 2007 на язык...

Определить какое из трех введенных чисел максимальное и вывести его на экран. (Язык Java)
ни как не могу разобраться, и найти примеры(

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru