The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Космическое агентство NASA открыло код платформы для создани..., opennews (??), 29-Мрт-15, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


61. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от Аноним (-), 30-Мрт-15, 09:35 
ха, я думал оно на Ada
Ответить | Правка | Наверх | Cообщить модератору

65. "Космическое агентство NASA открыло код платформы для создани..."  +2 +/
Сообщение от Аноним (-), 30-Мрт-15, 10:33 
> ха, я думал оно на Ada

Внезапно, "устаревший и немодный" сишечка используется в куче суперответсвенных областей. Потому что позволяет достигать предсказуемости характерной для ассемблера без использвания оного. А всякие модные хипстерские приблуды обеспечивают свистелки и пеpдeлки, но - ценой потери этой самой предсказуемости. А предсказуемость инструмента - первый шаг к надежности системы, если что.

Старый и немодный сишечка может например память заранее выделить, на старте. Ява-хипстеры и прочие не понимают: как это - "вообще нет управления памятью?" :). А если нет динамического выделения памяти - ВНЕЗАПНО отпадает целый класс багов, например...

Ответить | Правка | Наверх | Cообщить модератору

79. "Космическое агентство NASA открыло код платформы для создани..."  –6 +/
Сообщение от iZEN (ok), 30-Мрт-15, 13:25 
> Старый и немодный сишечка может например память заранее выделить, на старте. Ява-хипстеры и прочие не понимают: как это - "вообще нет управления памятью?" :). А если нет динамического выделения памяти - ВНЕЗАПНО отпадает целый класс багов, например...

Баг ДНК сишечки "Выход за пределы границ областей памяти" - не такой уж редкий случай. Если точнее, то с ним связано больше половины случаев намеренного или случайного взлома программ.

Ошибку "Переполнение памяти" (Out of memory error) тоже никто не отменял.

Ответить | Правка | Наверх | Cообщить модератору

85. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от Аноним (-), 30-Мрт-15, 14:28 
> Баг ДНК сишечки "Выход за пределы границ областей памяти" - не такой уж редкий случай.

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

> Ошибку "Переполнение памяти" (Out of memory error) тоже никто не отменял.

Опять же контролируй, что делает твой алгоритм.

Ответить | Правка | Наверх | Cообщить модератору

87. "Космическое агентство NASA открыло код платформы для создани..."  –2 +/
Сообщение от клоун (?), 30-Мрт-15, 14:46 
Указанная ошибка входит в топ-10 допускаемых. Из чего следует, что

ИЛИ все люди (кроме тебя, разумеется) конченные де-илы, не понимающие или понимающие и принципиально нежелающие применять написанные тобой правила

ИЛИ это реальный косяк ЯП, требовать от человека помнить больше, чем тот в обычной ситуации способен.

Ответить | Правка | Наверх | Cообщить модератору

88. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от csdoc (ok), 30-Мрт-15, 14:57 
> Указанная ошибка входит в топ-10 допускаемых. Из чего следует, что
> ИЛИ все люди (кроме тебя, разумеется) конченные де-илы, не понимающие или понимающие
> и принципиально нежелающие применять написанные тобой правила
> ИЛИ это реальный косяк ЯП, требовать от человека помнить больше, чем тот
> в обычной ситуации способен.

С - это очень специфический язык программирования среднего уровня, грубо говоря,
машинно-независимый ассемблер для написания переносимых операционных систем:

http://habrahabr.ru/post/230777/
Ещё раз о неопределённом поведении или «почему не стоит забивать гвозди бензопилой»

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

#include <stdio.h>
#include <stdlib.h>

int main() {
  int *p = (int*)malloc(sizeof(int));
  int *q = (int*)realloc(p, sizeof(int));
  *p = 1;
  *q = 2;
  if (p == q)
    printf("%d %d\n", *p, *q);
}
$ clang -O realloc.c ; ./a.out
1 2

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

Ответить | Правка | Наверх | Cообщить модератору

91. "Космическое агентство NASA открыло код платформы для создани..."  –2 +/
Сообщение от клоун (?), 30-Мрт-15, 15:49 
Ты хочешь донести, что у любого инструмента есть свои особенности (не всегда удобные пользователю), которые нужно знать и с которыми нужно смириться.

Я тебе говорю о том, что если инструмент провоцирует пользователя на совершение ошибок, следует изменить или инструмент или методы его применения.

Ответить | Правка | Наверх | Cообщить модератору

94. "Космическое агентство NASA открыло код платформы для создани..."  +1 +/
Сообщение от csdoc (ok), 30-Мрт-15, 16:04 
> Ты хочешь донести, что у любого инструмента есть свои особенности (не всегда
> удобные пользователю), которые нужно знать и с которыми нужно смириться.

В статье очень доступно объясняется, «почему не стоит забивать гвозди бензопилой».

> Я тебе говорю о том, что если инструмент провоцирует пользователя на совершение
> ошибок, следует изменить или инструмент или методы его применения.

И какой язык программирования предлагается использовать вместо С ?

P.S.

Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется. — Бьерн Страуструп

Есть два способа построения программ: сделать их настолько простыми, что там очевидно не будет ошибок, или же настолько сложными, что там не будет очевидных ошибок. - Энтони Хоар, 1980 лекция на вручении премии Тьюринга

Ответить | Правка | Наверх | Cообщить модератору

112. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от cdscdsc (?), 01-Апр-15, 03:06 
> Требовать от языка программирования С чтобы он был легким, просты и удобным  -  это как минимум не понимать, для чего он был создан и для чего изначально применялся.

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

http://www.lysator.liu.se/c/bwk-on-pascal.html
The effort to rewrite the programs in 'Software Tools' started in March, 1980, and, in fits and starts, lasted until January, 1981.  The final product(19) was published in June, 1981.  During that time I gradually adapted to most of the superficial problems with Pascal (cosmetics, the inadequacies of control flow), and developed imperfect solutions to the significant ones (array sizes, run-time environment).

Ответить | Правка | К родителю #88 | Наверх | Cообщить модератору

113. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от csdoc (ok), 01-Апр-15, 20:20 
>> Требовать от языка программирования С чтобы он был легким, просты и удобным  
>> -  это как минимум не понимать, для чего он был создан и для чего изначально применялся.
> Вообще то (как обычно) он и создавался чтобы на тот момент быть
> самым легким, простым и удобным. И неспецифичным.

Это уже вторичные цели. Прежде всего язык С должен быть достаточно низкоуровневым,
чтобы позволять писать эффективный код и вместе с тем - должен быть переносимым,
чтобы операционную систему можно было бы легко переносить между разными платформами.

Если одновременно надо достичь эти две цели - то и получится в результате язык С.

Например, в Java - приоритеты как раз более смещены в сторону простоты, удобства
и легкости написания/сопровождения софта, поэтому, например, там есть сборщик мусора.

James Gosling: Java — это C++, из которого убрали все пистолеты, ножи и дубинки.

Java = simple, object oriented, distributed, interpreted, robust, secure,
architecture neutral, portable, high performance, multithreaded,
dynamic language – Gosling, “Java: An Overview” (1995)

В результате:

Прирост производительности разработчиков от простого перехода в разработке ПО с языка программирования C++ на языки Java и C# оценивается экспертами в 500% — чем, собственно, и объясняется вытеснение первого языка двумя последними в течение достаточно короткого срока. [...] Java и C# обладают двумя важными свойствами: а) они лишают программиста возможности сделать некоторые чрезвычайно болезненные ошибки, исправление которых часто требовало неадекватного и непредсказуемого времени, и б) они сильно облегчают возможность сборки программы из крупных готовых частей. - цитата из http://dz.ru/solutions/phantom/

Ответить | Правка | Наверх | Cообщить модератору

114. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от vcdvfvf (?), 03-Апр-15, 02:55 
>> Вообще то (как обычно) он и создавался чтобы на тот момент быть  самым легким, простым и удобным. И неспецифичным.
> Это уже вторичные цели. Прежде всего язык С должен быть достаточно низкоуровневым, чтобы позволять писать эффективный код и вместе с тем - должен быть переносимым, чтобы операционную систему можно было бы легко переносить между разными платформами.

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

At the time we did not put much weight on portability; interest in this arose later.
Dennis M. Ritchie

На самом деле слепили кое-как и побыстрее что-то получше ассемблера вот и все цели. А что такое - эффективный код - так это вообще загадка.

> Например, в Java - приоритеты как раз более смещены в сторону простоты, удобства и легкости написания/сопровождения софта, поэтому, например, там есть сборщик мусора.  James Gosling: Java — это C++, из которого убрали все пистолеты, ножи и дубинки.

Очередные легенды да? Чтобы на практике чего-нить родить на жабе надо знать 1000 библиотек, поведение которых бывает далеко не очевидно. Часто быстрее самому написать, чем нужные методы искать. Что до с++ то на нем (в смысле 1000 страничного стандарта) никто и не пишет. Все реально пользуются небольшим подмножеством самых распространенных возможностей. Но какое отношение с++ имеет к ц, кроме жуткого низкоуровнего синтаксиса непонятно. Там свои массивы, строки и т.п. Там даже нормальные ссылки есть.

> Прирост производительности разработчиков от простого перехода в разработке ПО с языка программирования C++ на языки Java и C# оценивается экспертами в 500%

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

Ответить | Правка | Наверх | Cообщить модератору

115. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от csdoc (ok), 03-Апр-15, 17:19 
> At the time we did not put much weight on portability; interest
> in this arose later. Dennis M. Ritchie

Это цитата из раздела "History: the setting" статьи http://cm.bell-labs.com/who/dmr/chist.html
- в этой вырванной из контекста цитате Dennis M. Ritchie говорит о времени,
когда они использовали язык программирования B. Тогда ядро операционной
системы еще было написано на ассемблере, а утилиты на B.

>> Например, в Java - приоритеты как раз более смещены в сторону простоты,
>> удобства и легкости написания/сопровождения софта, поэтому, например,
>> там есть сборщик мусора.  
>> James Gosling: Java — это C++, из которого убрали все пистолеты, ножи и дубинки.
> Очередные легенды да?

Нет, это факты. James Gosling - создатель языка программирования Java.

Java = simple, object oriented, distributed, interpreted, robust, secure,
architecture neutral, portable, high performance, multithreaded,
dynamic language – Gosling, “Java: An Overview” (1995)

The first Java “buzzword” is SIMPLE

Ответить | Правка | Наверх | Cообщить модератору

119. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от Аноним (-), 03-Апр-15, 18:43 
> James Gosling: Java — это C++, из которого убрали все пистолеты, ножи и дубинки.

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

Ответить | Правка | К родителю #113 | Наверх | Cообщить модератору

121. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от csdoc (ok), 03-Апр-15, 22:29 
>> James Gosling: Java — это C++, из которого убрали все пистолеты, ножи и дубинки.
> Единственная проблема: когда что-то запускают в космос
> - нужен, образно говоря, хирург и скальпель.

Когда что-то запускают в космос - программы создают
в некоторых случаях с помощью https://ru.wikipedia.org/wiki/ДРАКОН
из графического представления программа потом компилируется в машинный код.

Ответить | Правка | Наверх | Cообщить модератору

120. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от Аноним (-), 03-Апр-15, 18:47 
> ИЛИ это реальный косяк ЯП, требовать от человека помнить больше, чем тот
> в обычной ситуации способен.

Когда сильно припирает - можно и автоматический валидатор напустить. Он напомнит. Сишечка выпускает подушки безопасности, рулит ответственными объектами и прочая. И потеснить его там особо как-то и некому. Писать на асме утомительно, а все остальные - менее предсказуемые.

Завалить в режим "а я типа, кодогенератор, без 100500 мегов библиотек и автоматических подтиралок зада" сишечку можно. В отличие от "более хороших" языков. По поводу чего сишечка работает в минмальных, предсказуемых окружениях, системном добре и прочая. А остальным туда - просто не судьба.

Ответить | Правка | К родителю #87 | Наверх | Cообщить модератору

117. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от Аноним (-), 03-Апр-15, 18:39 
> Ошибку "Переполнение памяти" (Out of memory error) тоже никто не отменял.

Как раз таки при полностью статичном распределении памяти - память раздается в момент линковки, может при старте. Если заработало - все, дальше уже точно не сломается. Память которая уже выделена не может "закончиться". Она уже выделена. А новую просить не будем. В мироконтроллерах зачастую вообще malloc() нет. Захочешь - и то не попросишь на ходу, прикинь? :)

Ответить | Правка | К родителю #79 | Наверх | Cообщить модератору

111. "Космическое агентство NASA открыло код платформы для создани..."  +/
Сообщение от cdscdsc (?), 01-Апр-15, 02:54 
> Старый и немодный сишечка может например память заранее выделить, на старте. Ява-хипстеры

и прочие не понимают: как это - "вообще нет управления памятью?"

int[] myIntArray = new int[1000];

String[] myStringArray = new String[1000];

Ответить | Правка | К родителю #65 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру