LINUX.ORG.RU
ФорумTalks

АНБ разработчикам: Подумайте о переходе с C и C++ на языки программирования с безопасной работой с памятью

 , , , ,


2

2

NSA advises organizations to consider making a strategic shift from programming languages that provide little or no inherent memory protection, such as C/C++, to a memory safe language when possible.

Examples of memory safe language include C#, Go, Java®, Ruby™, Rust®, and Swift®

National Security Agency | Cybersecurity Information Sheet



Последнее исправление: Dimez (всего исправлений: 3)
Ответ на: комментарий от hateyoufeel

Вот сишники практически все такие.

Я бы не обобщал. То есть конкретно я косячу, конечно. И ленюсь. Но и не стучу себя пяткой в грудь на каждом углу, что я самый крутой осилятор православной сишечки на раёне.

sparkie ★★★★★
()
Ответ на: комментарий от fluorite

В шарпе и переменные на стеке добавили... зачем? Было ж современно и безопа... :) только жуниары все равно конкатенировали строки в цикле и умудрялись NPE получить на ровном месте. Ах да, а сеньеры радостно переписывали код с делегатов на лямбды, игнорируя творчество джунов, похороненное под годовыми кольцами :)

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 2)

В C++ как бы тоже есть безопасная работа с памятью через unique_ptr/shared_ptr.

Meyer ★★★★★
()
Ответ на: комментарий от DumLemming

Так не только диды делали, но и Джон Кармак потом. Да и сейчас в некоторых случаях это используют.

Meyer ★★★★★
()
Ответ на: комментарий от hateyoufeel

Конечно и текла и сегфолты были, а кто пишет без ошибок? Просто как по мне, от языка это не сильно зависит. Но когда сам память выделяешь и освобождаешь, то все достаточно очевидно, а в более продвинутых языках, можно легко напороться на какое-то неочевидное поведение и так же поймать NRE. Так-то и на SQL как нефиг сервер положить кривым запросом\процедурой(про триггер и не говорю).

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)

Звучит как угроза

bender ★★★★★
()
Ответ на: комментарий от slackwarrior

«Счастливая случайность» называется ограниченные ресурсы компов того времени, где конпелять сутками только рантайм было некогда

У какого-нибудь поцкаля рантайма тоже с гулькин член, но он тем не менее так не взлетел. Хотя софт под мак таки на поцкалях все писали в 80х.

Очень печально, потому что в поцкале хотя бы строки есть, и Эдичка бы с ними не обосрался.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от Loki13

Конечно и текла и сегфолты были, а кто пишет без ошибок? Просто как по мне, от языка это не сильно зависит.

Если у тебя нет указателей, сегфолт вызвать гораздо сложнее. Не находишь?

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

hateyoufeel ★★★★★
()
Ответ на: комментарий от EXL

Ghidra

Ghidra это всё хорошо, пока вы идёте строем и равняетесь на *86.

А как только приходится ковырять код под другие процессоры (мне вот надо было разобраться с прошивкой под H8+ процессор), кроме крякнутой идеи других вариантов просто нет.

Для сравнения: Ghidra CPU support vs IDA Pro CPU support

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

У какого-нибудь поцкаля рантайма тоже с гулькин член, но он тем не менее так не взлетел.

Ты просто не в курсе, про https://ru.m.wikipedia.org/wiki/Structured_Text, на дельфях продолжают писать кому надо (покупают за деньги у IDERA, прикинь), а все эти твои писюки с маками вообще не делают погоды в реальном секторе (наоборот, отдыхают, если кто-то поломал ТЭЦ, управляемую АСУТП, где растишками не пахнет, забив вложиться в техобслуживание, упоровшись в зеленую экошизу, или в банке «переезжают» с того что просто работало на джаву, т.к. хипстеры ниасиливают сапорт олдскульрого софта с формально-доказательным тестированием, а менеджеры премию хотят не через год, а в конце квартала).

Алсо зачем паскаль, когда есть Modula-2 (софт для спутников если чо), оберон и ада (под нее MIL-STD есть, а под растишку «еще нет»). Но... ты даже не пытался, да? :)

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

ST не так уж похож на Паскаль. Это мутант Паскаля с Бейсиком. Меня, например, люто выбешивают конструкции типа end_if и им подобные. Математику и обработку каких-либо данных на нём прикольно лепить. Логику всё равно в сто раз наглядней и надёжней делать на LD или его гибридах с FBD, как в CoDeSys или вариантах от Siemens/Omron/Mitsubishi

Alden ★★★★
()
Ответ на: комментарий от Alden

ST не так уж похож на Паскаль

Так рассуждая растишка не похожа на растишку, это мутант растишки в каждой версии :) В эту игру можно играть в двоем.

люто выбешивают конструкции типа end_if

у кого-то к паскале-подобному всему ненависть с begin/end начинается, но это синдром утенка в чистом виде.

Логику всё равно в сто раз наглядней

Субъективное утверждение. Это вот «наглядней» пытались делать много раз, вплоть до «визуальных языков» и «nocode», все равно, либо человек понимает программирование («логику программ»), либо нет :) Во втором случае «нагляднее» ему не помогает, зато консультанты ему на отлично по ушам проезжают маркетингом «программирование без программирования».

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от beastie

Тоже шир-потреб. Я про экзотику (которая не такая уж и экзотика).

А мне вот доводилось сталкиваться с такой экзотикой, что даже дефолтная IDA Pro не выручала. По ссылке которую ты привел, как раз нет, например, вот этой штуки:

https://en.wikipedia.org/wiki/M%C2%B7CORE

К счастью, энтузиасты сделали модуль поддержки этой архитектуры для IDA.

В своё время камни на M*CORE были весьма производительными конкурентами ARM’ов и ставились в high-end решения со всякими 3G, HSPDA, тогда как у ARM’ов был mid-end/low-end сегмент GSM/GPRS/EDGE. Но в году так 2007-2008 всё-таки воцарилась монополия ARM’ов, которая влавствует до сих пор.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 3)
Ответ на: комментарий от Loki13

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

rekket
()
Ответ на: комментарий от slackwarrior

Это факт, подтверждённый практикой. Все так пишут. У меня есть тонны прог, написанных на FBD/LD поляками, итальянцами, немцами, нашими, мной лично. Везде почти логика на лестницах, вычисления на ST.

Я в отладчике когда смотрю на такую конструкцию, мне сразу понятно почему старт на ПЧ не приходит.

https://imgur.com/bLcZHQo

А теперь представь, что это не простое и наглядное графическое представление, а тонны if-then с кучами скобок, в которых чёрт ногу сломит. Даже если вычислять отдельное каждое подусловие и городить сотни вспомогательных переменных.

А уж ловля фронтов на ST… Когда на LD это «контакт со стрелочкой», по которой сразу понятно какой именно ловится фронт.

Лестничную логику десятилетия все используют не просто так. Это именно та область, где визуальное представление нагибает текстовое, что бы там прибежавшие к нам в промку «обычные» программисты про него не думали.

Тем более, с чего, вдруг, программирование на графических МЭКовских языках – это программирование без программирования? На них программу тоже нарисовать надо, так же как и написать буковками.

Alden ★★★★
()
Последнее исправление: Alden (всего исправлений: 4)
Ответ на: комментарий от Alden

Это факт, подтверждённый практикой. Все так пишут. У меня есть тонны прог, написанных на FBD/LD поляками, итальянцами, немцами, нашими, мной лично. Везде почти логика на лестницах, вычисления на ST.

Применительно к логическим схемам с этим никто и не спорил, кэп. Это прекрасное подтверждение «так сложилось». Например, потому что этот DSL подходит для логических элементов. Только и всего.

А теперь представь

Мне не надо представлять. Я видел другие приложения «less code», «no code», например, как это пытались делать в SaaS/PaaS, где тоже пытаются программировать мышкой. Получается у них плохо, т.к. нужно именно знать программирование в терминах входов-выходов и логики между ними, а любой шаг влево-вправо от хелпа — добро пожаловать в полную кастомизацию «запилите нам компонент, который выставит вот эти свойства, вместо вон тех» :) А тыща if-then не грузилась в визуальный редактор(он тупо падал), хотя их можно было сгенерить скриптом и задеплоить. И девелоперы всяко предпочитали сапорту этих визуальных схем кодинг на встроенном языке.

Это именно та область, где визуальное представление нагибает текстовое

Опять, это только одна область :) Как я уже сказал, я видел ужасные реализации визуальных представлений, где это просто не работает. Точно так же не будет это работать, если человек не понимает логические элементы: что визуально, что текстово. Т.е. в «промке» работает только поэтому. Это инструмент под голову которая уже думает в терминах логических элементов.

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

Т.е. в «промке» работает только поэтому. Это инструмент под голову которая уже думает в терминах логических элементов.

Ну,я за пределы своих контроллеров и небольших скриптов для HMI уже давно, увы, не вылезаю. Правда, хоть и есть стандарты МЭК, каждый контроллер, считай, свой диалект. Особенно после того, как на рынок сейчас хлынула тонна мутной китайщины, которую приходится покупать, потому что больше ничего и нету :(

Alden ★★★★
()
Ответ на: комментарий от Alden

Я рад за вас, что у вас хоть есть промстандарты :) Количество областей где они есть к сожалению узко. В ойтишке за них вообще склонны выдавать «бестпрактисы» придуманные кем-то для себя. Более того, сразу после у этих «бестпрактисов» с первой страницы гугла появляются одепты, которые думают что этот способ единственный :) И до него ничего не было, или все было говно.

slackwarrior ★★★★★
()
Ответ на: комментарий от anc

Это они перечислили те в которые свои закладки напихали? :)

Они просто не в курсе про Метапрог или язык Яр.

OSBuster
() автор топика
Последнее исправление: OSBuster (всего исправлений: 1)
Ответ на: комментарий от Mirage1_

У меня послевкусие после универского паскаля, поэтому к дельфям я несколько прохладен. А вот Билдер, да, было дело.

sparkie ★★★★★
()
Ответ на: комментарий от hateyoufeel

про «ближе к железу»

Так-то оно ближе к железу

«просто нужны руки прямые».

А вот тут начинается многословность не короче, чем у старой жабы. И если не надо ядро хачить, все убегают на то, что в сабж рекомендуют.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

Так-то оно ближе к железу

Нет? Сишечка не ближе к железу чем какой-нибудь ржавый. Да или вообще любой язык.

И если не надо ядро хачить, все убегают на то, что в сабж рекомендуют.

Ну, да. Потому что для юзерспейса C не даёт вообще никаких преимуществ сейчас. Разве что райнтайм для более высокоуровневых языков всё ещё имеет какой-то смысл писать на C, в основном из-за того что бинарники на расте весят до жопы. Но и это скоро изменится.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 2)
Ответ на: комментарий от hateyoufeel

А, да, точно. Чёт я застрял в древнем железе с навороченными командами...

Shadow ★★★★★
()
Ответ на: комментарий от sparkie

У меня послевкусие после универского паскаля, поэтому к дельфям я несколько прохладен. А вот Билдер, да, было дело.

А что случилось в университете с паскалем?

OSBuster
() автор топика
Ответ на: комментарий от OSBuster

Я тоже весь в догадках. Сколько выпускников МФТИ, МГТУ, МГУ видел - ни у кого никаких нервных позывов по отношению к Delphi не было. Даже наоборот им пользовались там, где им это удобно было.

grem ★★★★★
()

Наконец-то все перейдут на жабу

Karapuz ★★★★★
()
Ответ на: комментарий от Loki13

Доказано же — чем больше задачек на leetcode решил, тем лучше погромист! А если на доске дерево перевернул, то ваще атас, вот те си, твори, художник!

untitl3d
()
Ответ на: комментарий от untitl3d

На самом деле это не такая уж и бесполезная метрика. Уж точно более релевантная, чем сколько интересных только самому себе костылей средний адепт «сишечки» c ЛОРа написал за последнее десятилетие для Z80 или текстовых редакторов на Qt и всякое такое.

OSBuster
() автор топика
Ответ на: комментарий от OSBuster

А что случилось в университете с паскалем?

Случилось пресыщение. Началось с восторга, продолжилось рутиной, закончилось отвращением. Delphi появился в период между рутиной и отвращением, поэтому мне он не глянулся. Но если взглянуть трезво, то как инструмент pascal вполне норм.

sparkie ★★★★★
()
Ответ на: комментарий от OSBuster

На самом деле это не такая уж и бесполезная метрика.

Полезность литкода сильно уменьшается, если учесть, что большинство там не решают задачи, а тупо копипастят и сабмитят уже готовые решения. Мне как-то на интервью приходил один парень, который вместе со своим резюме послал свой профиль на литкоде. Я посмотрел, там он за вечер «решал» по 10 задач. Причём задачи такие нехилые, на одно понимание условия уйдёт минут так 15. А он одну за другой сабмитил по 10 минут на каждую.

Так что текстовый редактор, или что-нибудь на С для Z80 меня бы больше впечатлили чем литкод.

rupert ★★★★★
()
Ответ на: комментарий от grem

Там JVM только на старте куч работы делает, а ещё сам Netbeans при инициализации делает кучу работы. Впрочем так работают любые более-менее сложные программы. Естественно при этом потребляется память. Вот только в случае ГЦ она освобождается не сразу, а в зависимости от алгоритма применяемого в ГУ.

Вроде пятизвёздочный, а приходится такие элементарные вещи объяснять.

WatchCat ★★★★★
()
Ответ на: комментарий от WatchCat

Кнопка то зачем? Я то как раз ожидал, что это будет автоматически всё очищаться и спрятано от пользователя.

grem ★★★★★
()
Ответ на: комментарий от grem

ГЦ не знает за ОС и когда она что-то захочет запустить, а у тебя память съедена ВМ. Вот для подобных случаев и сделали, по запросу общественности, кнопку «запустить ГЦ».

WatchCat ★★★★★
()
Ответ на: комментарий от WatchCat

Мне как-то рассказывали, что разработчики одного приложения для своих тестовых целей добавили кнопку и забыли её удалить перед передачей заказчику промежуточной версии. В следующей версии они её удалили. Заказчик: «а где кнопка?»

grem ★★★★★
()
Ответ на: комментарий от burato

Думаю вы сбежите и с ЛОРа если будете продолжать писать на темы, которых не понимаете ;)

grim ★★☆☆
()
Ответ на: комментарий от Loki13

когда колесо изобрели, тоже, небось, бурчали, что настоящие пещерные мужики и без этих гадостей всё на своём горбу утащит. А кто жалуется, тот просто слабак и баба.

ugoday ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.