Имя: Пароль:
IT
 
Паскаль самый безопасный язык программирования ?
0 Иде я
 
01.12.06
14:31
Линус Торвальдс достаточно нелестно отозвался о некоторых опциях показа предупреждений (warnings) в GCC, говоря о том, что реализация многих из них просто не учитывает желания программиста и реальные проблемы. Тем неменее, некоторые из предупреждений очень полезны и используются при сборке ядра. Линус также отметил, что язык C не совершенен и для написания абсолютно безопасного кода он бы выбрал Паскаль.
http://kerneltrap.org/node/7434
1 Иде я
 
01.12.06
14:31
2 igork1966
 
01.12.06
14:36
(0) Сделайте систем которой сможет пользоватся и дурак, и только дурак захочет ей пользоваться.
3 igork1966
 
01.12.06
14:36
(2) систем = систему
4 Иде я
 
01.12.06
14:40
(2) Стал бы летать на самолетах под управление windows ?
5 Гений 1С
 
гуру
01.12.06
14:40
Паскаль-подобный язык в навижн use
6 Херрес
 
01.12.06
14:41
(0) самый безопасный - на нём ничего нельзя запрограммировать
7 romix
 
модератор
01.12.06
14:52
(6) Мягко говоря, спорное утверждение.
8 romix
 
модератор
01.12.06
14:53
(0) Видимо, Торвальдс постеснялся упомянуть ".NET".
9 Vlad55
 
01.12.06
15:00
Писал на Паскале под ДОС.Очень надежно.
10 ШтушаКутуша
 
01.12.06
15:03
(6) Гонишь? :)))) Или не подумал? :))))
11 VasilyKushnir
 
01.12.06
15:09
Что такое "безопасный код"? Я что, что-то не то сегодня курю? Всего два примера: Делфи и С-билдер. Лично мне Паскаль не в нюх, но если надо что-то побыстрячку и красиво, естественно Делфи! Хотя Си уважаю больше. В принципе, если сильно постаратся, то и на Си можна каку накалякать, а Бейсике забацать лялю. В чем проблема?
12 корум
 
01.12.06
15:10
(6) 3 последних буквы лишними стали?
13 ШтушаКутуша
 
01.12.06
15:13
(11) Принято считать,что C++ генерит более эффективный код. В смысле легче
его сгенерить.
14 Иде я
 
01.12.06
15:17
В паскале строгая типизация переменных.
15 mrkorn
 
01.12.06
15:25
(8) :)  Ждем  Линукс .NET
16 Эльниньо
 
01.12.06
15:25
Я в досовском Паскале как-то вирус наваял - очень безопасный.
17 romix
 
модератор
01.12.06
15:33
(14) В C она тоже строгая.
18 romix
 
модератор
01.12.06
15:35
Только в C++ синтаксис - черт ногу сломит.
Нет ключевых слов var, procedure, function.
Не знаю, как компилятор (и человек) находит где объявления, а где код.
В Delphi код точно такой же, но его хотя бы читать можно.
19 ШтушаКутуша
 
01.12.06
15:35
(17) Штоооооо?! Может ты С++ имел ввиду?
20 MMF
 
01.12.06
15:36
ну насчет самый безопасный это гонево.
21 spock
 
01.12.06
15:37
(19)в обоих.
22 Гений 1С
 
гуру
01.12.06
15:38
Если в данном диалекте Пасцаля нет типа Variant, то это отцтой, иногда он нужен. А если такой тип есть, то это уже Бейсик. Навижн со встроенным паскалеподобным языком - это ужас...
Программист должен думать о длине строк. Трандец. Не, я выбираю бейсик и джава.
23 Гений 1С
 
гуру
01.12.06
15:39
Безопасность должна быть на уровне защиты ядра системы, а не на уроне языка.
24 romix
 
модератор
01.12.06
15:39
Кроме того, в C - нагромождение операций.
Такого наворотили, что сам чёрт копыта отбросит.
Даже Волшебник попался как-то на эту удочку: написал
& вместо && в PHP-скрипте, и ничего, PHP это "успешно" схавал.
25 orefkov
 
01.12.06
15:40
Убивает не оружие, убивают люди.
26 MMF
 
01.12.06
15:45
(25) есть опасные бритвы, а есть безопасные. Бреют и те и другие, а порезаться можно только опасными. Будущее за обероноподобными языками
27 romix
 
модератор
01.12.06
15:47
(22) Этот тип есть, но относительно редко используется (не рекомендуется его юзать без необходимости).

Строковый тип Паскаля был повторен в C++; он быстрее (как ни странно) и безопаснее C-шного отстоя.
28 spock
 
01.12.06
15:49
(27)про BSTR чтоли речь?
29 romix
 
модератор
01.12.06
15:50
(26) При работе с оборудованием на производстве необходимы заграждения и такие вещи, как двуручное включение пресса.
30 ШтушаКутуша
 
01.12.06
15:51
а у встроенного языка 1С-нет имени!
Может придумаем? :)))
31 MMF
 
01.12.06
15:54
(30) это говно не заслуживает носить собственного имени. Нечто скриптовое бейсикообразное
32 Очкарито
 
01.12.06
15:54
(30) предлагаю назвать его "встроенный язык 1С".
33 Кецалькоатль
 
01.12.06
15:54
Тут, имхо, какое-то нелогичное трактование понятия "безопасного кода". Я так и не понял, что имелось ввиду.
34 Иде я
 
01.12.06
15:54
одноэсина
осина
35 romix
 
модератор
01.12.06
15:55
(30) Паскейсик
36 Trigg
 
01.12.06
15:55
(0)
Пятница епт... пивка иди попей лучше!
37 Очкарито
 
01.12.06
15:55
(26) кста: точно помню, что был оберон под дос, а под винду есть?
38 ШтушаКутуша
 
01.12.06
15:56
Предлагаю,назвать встроенный язык 1С: Romix,предметно-ориентированный....
39 it086
 
01.12.06
15:57
(37) есть поделки всякие. и под .net в том числе
40 Гений 1С
 
гуру
01.12.06
16:03
(38) в 1с бейсик используется.(его диалект)
41 Иде я
 
01.12.06
16:04
(36) За рулем пока...но морально готовлюсь. Думаю - может в харю на дачу рвануть ? Или тупо с пивом рубится в линейку...хз
42 Иде я
 
01.12.06
16:05
(40) Угу, гейсик называется :)
43 Очкарито
 
01.12.06
16:08
(42) бугога!
44 VasilyKushnir
 
01.12.06
16:14
>Строковый тип Паскаля был повторен в C++; он быстрее (как ни странно) и безопаснее C-шного отстоя.

А при каких хырах миллиция, если свинью молнией убило? Какая связь между строковым типом и безопасностью? И вообще о какой безопасности идет речь?
Я же говорю, пользуюсь и тем и другим. И у каждого есть свои полюсы и свои минусы.
45 Очкарито
 
01.12.06
16:18
(44) щас тебе ромикс объяснит как связаны строковый тип и безопасность.
49 Волшебник
 
01.12.06
17:23
(40) Его ещё называют "одинэсик". Я так назвал своего кота.
50 КЗ
 
01.12.06
17:27
(49) Бедный кот. :-(
51 Широкий
 
01.12.06
17:31
(50) почему бедный? вот ему не пофигу...
52 romix
 
модератор
01.12.06
20:17
(44) >"Какая связь между строковым типом и безопасностью? И вообще о какой безопасности идет речь?"

Речь идет об ошибке переполнения буфера - пожалуй, самой частой причине взлома и краха систем, написанных на C.

Если в Дельфи увеличение строки просто приведет к автоматическому выделению новой памяти (по-моему, происходит удвоение размера буфера, когда строка перестает помещаться в старом буфере), то в строках в стиле C неожиданно большая строка может затереть указатели и адрес возврата в стеке, чем пользуются злоумышленники.

И случайные ошибки (сбои) часто возникают по этой же причине.

Помимо того, что C-строки небезопасные (на них нельзя положиться), так они еще и тормозные.

Чтобы определить длину строки, надо просканировать ее от начала до конца, а это отнимает много тактов процессора в обычных строковых операциях (копирование, вставка, выделение подстроки и т.д.).

Еще один недостаток C-строк: строка не может содержать символ с кодом 0.

Короче, сборник уродств и недостатков - для, пожалуй, самого распространенного на практике типа данных.

Помимо строк часто используются указатели, чтобы строить структуры данных.
В библиотеке Delphi есть готовые структуры данных (такие, как TStringList), тогда как в C надо строить при помощи указателей - весьма "взрывоопасного" строительного материала.

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

Если же рассматривать C как более компактное описание ассемблера - обилие трудночитаемых и чреватых ошибками закорючек (некоторые программисты составляют из них затейливые конструкции в стиле "достать левой пяткой правое ухо") и отсутствие необходимых ключевых слов (var, procedure, function) заставляют задуматься, откуда всенародная любовь к языку из закорючек и опасностей.

Если бы из C++ выкинули (или поглубже запрятали) C-шное наследие, и добавили (var, procedure, function), то я бы считал его нормальным языком. Только не есть ли это Delphi...
53 Валентин
 
01.12.06
20:24
Задрали... Кривизна языка прямо пропорциональна кривым рукам. Если не думаешь когда пишешь - то о чем можно говорить? В качестве аргумента когда-то говорил что и не васике можно срыв стека организовать... Так что думать надо что пишешь. С - достаточно емкий язык. С++ еще более емкий. Искать Буча, Александреску etc. Читать и восхищаться.
54 Иде я
 
01.12.06
21:25
Кстати, а третья нормальная форма не факт что будет эффективна...
К сожелению реалии таковы, что надо заставить на существующем железе заставить выполнятся эти ипучие бухрасчеты за минимальное время.
55 ШтушаКутуша
 
01.12.06
21:27
(54)
56 romix
 
модератор
02.12.06
00:11
(53) "Каждая ошибка имеет фамилию, имя и отчество" (с) И.В.Сталин
57 Моха Лёхов
 
02.12.06
00:13
В Паскале труднее сделать ошибку, язык жестче относится к типам данных, ссылкам и пр. В С можно такого наколбасить. Но С погибче будет.
58 Neco
 
02.12.06
00:22
Скорее всего Линус говорил не про Паскаль, а про Ада: язык программирования, созданный в 1979—1980 годах в результате грандиозного проекта, предпринятого Министерством обороны США с целью разработать единый язык программирования для так называемых встроенных систем.
(...)
Язык Ада возник в результате международного конкурса языковых проектов, проходившего в 1978—1979 годах.
(...)
Интересно, что все языки, дошедшие до последних туров этого конкурса, были основаны на Паскале. В этой связи Аду можно предварительно охарактеризовать как Паскаль, развитый с учётом заданных пяти основных требований. При этом авторы пошли в основном по пути расширения Паскаля новыми элементами.
http://ru.wikipedia.org/wiki/Ада_(язык_программирования)
59 romix
 
модератор
02.12.06
02:57
Макроглоссия (macroglossia; мокро- + греч. glossa язык; син. мегалоглоссия) - патологическое увеличение языка; наблюдается как аномалия развития или при наличии в языке хронического патологического процесса.
60 orefkov
 
02.12.06
09:12
(26)
2romix
Так уж люди устроены.
Одни понимают концепцию указателей сразу, другие никогда, как бы не старались.

В С++ нет никакого встроенного строкового типа. Как был в C char*, так и остался. Другое дело, что C++ позволяет с легкостью определить свой собственный тип, с какими надо свойствами, и использовать его.
Боишься указателей - юзай smart-поинтеры, коих несчесть числа.

C++ нравится мне своим духом, который выражается в трех принципах:
1. Поддерживать язык простым.
2. Доверять програмисту.
3. Не мешать програмисту делать то, что ему надо.
61 Mikeware
 
02.12.06
09:22
(60)Присоединяюсь.
Как сказал Димка Голдобин еще году в 1989 - "ненавижу умные компиляторы" :-)
Зы: правда, я давно не брал в руки сишек... ;-)
62 Подполковник
 
02.12.06
09:59
пишем на бейсике
63 Ay49Mihas
 
02.12.06
10:06
(52) Всё это понятно, но С давно уже позиционируется как кроссплатформенный
ассемблер, а не как язык высокого уровня для решения прикладных задач. То, что
студенты, выучившие алгоритмизацию на примере С, пытаются всё остальное
реализовать на С, не говорит о том, что С плох.

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

Для меня Паскаль плох своей низкой читаемостью (да, хороший стиль может
исправить эту ошибку, но я почему-то встречался только с исходниками где
табуляция заменена двумя пробелами, и это всё делает код массивным и
нечитаемым). Из хорошо читаемых, высокоуровневых и удобных, опять же, могу
предложить PHP и Python. Как ЯП общего назначения.
64 Песец
 
02.12.06
12:23
(52) Изучение языка С++ для программиста - как для лингвистов латынь: если знаешь латинский можно считать что знаешь все европейские языки и без особого труда освоишь любой другой язык. Можно изучать английский, затем немецкий, затем последовательно остальные. А можно один раз выучить латынь, а потом достаточно посмотреть что в другом языке убрано/упрощено в сравнении с латынью - и можно сказать ты знаешь этот язык.
65 Песец
 
02.12.06
12:24
(64+) "С - язык, созданный программистом для программистов" (с)
66 VasilyKushnir
 
04.12.06
14:15
Вопросс   romix.
Наверное у меня к пасику предубеждение (хотя Делфи курю и даже нравится) вот из-за чего: Объявление переменных - заметил, что для нормальной работы нужно сначала объявлять более крупные (Дабле, Реал) и по нисходящей к более коротким (Байт). Типы привожу условные. Если же все вперемешку были большие проблемы - точно не помню, но вроде надо было, чтобы переменная начиналась с границы слова. В современных версиях Пасика это уже исправлено?
67 GrayT
 
04.12.06
14:17
(66)какой хитрый транслятор....
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.