OberonCore
https://forum.oberoncore.ru/

стыдоба от Эппл
https://forum.oberoncore.ru/viewtopic.php?f=57&t=5148
Страница 1 из 5

Автор:  Info21 [ Среда, 04 Июнь, 2014 10:49 ]
Заголовок сообщения:  стыдоба от Эппл

scaredy_cat_333 писал(а):
2014-06-04

Где-то у вас был заруб с энтузиастами, защищающими все до последней фичи С++ как "производственного языка". Не нашел. Но здесь тоже уместно оставить: мелочь, но иллюстрирующая. Картинку. Избыточные "исторически сложившиеся" конструкции в языке и их влияние на "производство".

Недавний баг у Эппла в реализации безопасного соединения
(пришлось выпускать срочное внеочередное обновление iOS):
http://www.wired.com/2014/02/gotofail/ И картинка оттуда, для наглядности.

Изображение

Наличие в языке конструкции "if" statement (вместо "if" statements "endif") - исключительно опасно.
Вот по вышепроиллюстрированной причине.
И это было ясно уже в момент создания стандарта C++, уверен.
Но "исторически сложившаяся" конструкция победила.
Полагаю, стоимость одной этой конкретной эппловской ошибки превзошла стоимость введения несовместимости в язык в момент разработки стандарта.

(У нас, кстати, эта фича - как и многие другие - из производственного варианта языка административно выкинута.
"If" без фигурных скобочек запрещен к использованию в боевой обстановке.
Но именно ее отслеживать человеческим вниманием тяжело.
И своя рука то и дело норовит вставить, и из чужого кода вычеркнуть с дополнительным трудом подымается.
Ну экономия же. Пара скобок экономится...)


Педантизму ради сохраним и сообщение Эппла по поводу: http://support.apple.com/kb/HT6147

Apple Inc. писал(а):
iOS 7.0.6
Data Security

Available for: iPhone 4 and later, iPod touch (5th generation), iPad 2 and later

Impact: An attacker with a privileged network position may capture or modify data in sessions protected by SSL/TLS

Description: Secure Transport failed to validate the authenticity of the connection. This issue was addressed by restoring missing validation steps.
Ну твою же мать. Стыдоба какая-то невероятная.

Эппл, кстати, наш заказчик и гонять умеет так, как никто другой
(что исключительно положительно характеризует фирму с точки зрения качества ее изделий).
И однако вот. Не ожидал.

Автор:  Alexey Veselovsky [ Среда, 04 Июнь, 2014 12:10 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Ну, собственно это проблемы не столько С++, сколько Си. (apple вообще на С++ практически не пишет - только WebKit, да и то только потому, что это не их проект изначально, это KHTML). Так что при чем тут С++ не ясно :-) В плюсах этих goto скорее всего никогда написано не было бы - там другие способы выпрыгнуть из функции, более культурные.

А Си Apple уже потихоньку выкидывает из области прикладной разработки, конкретно, оно выкинуло его из ObjC, и в результате получился Swift: http://oberspace.dyndns.org/index.php/topic,635.0.html

Автор:  Info21 [ Четверг, 05 Июнь, 2014 21:46 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Важно, что на дворе 2014 год.

Стыдоба.

Автор:  Alexey Veselovsky [ Четверг, 05 Июнь, 2014 22:05 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Info21 писал(а):
Важно, что на дворе 2014 год.

Стыдоба.


Не ошибается только тот, кто ничего не делает :-) Чем меньше делаешь, тем меньше ошибок (по числу, а не по проценту от сделанного).

Автор:  Info21 [ Пятница, 06 Июнь, 2014 11:19 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Задолбали "прагматики".

Автор:  ilovb [ Пятница, 06 Июнь, 2014 12:41 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Сильный аргумент. А с чем вы собсна не согласны?

Автор:  Александр Ильин [ Пятница, 06 Июнь, 2014 12:53 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Эппл на смену ОбжективСи выкатывает новый язык Свифт, который (надо же!) при целочисленном переполнении умеет бросать исключения, автоматически управляет памятью и проверяет границы массивов.
Указание типов переменных при объявлении является необязательным.

http://en.wikipedia.org/wiki/Swift_(App ... g_language)
https://developer.apple.com/swift/

Автор:  Александр Ильин [ Пятница, 06 Июнь, 2014 12:57 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Alexey Veselovsky писал(а):
В плюсах этих goto скорее всего никогда написано не было бы - там другие способы выпрыгнуть из функции, более культурные.
Ога, да.

Автор:  Info21 [ Пятница, 06 Июнь, 2014 13:35 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Раз уж о поговорках речь зашла:

"Не в свои сани не садись"
"Не умеешь -- не берись"

Источники таких проблем были явно названы 40 лет назад. И тогда же было растолковано, как их избегать.

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

Особенно с учетом зарплат IT-шников.

Автор:  Alexey Veselovsky [ Пятница, 06 Июнь, 2014 16:53 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Александр Ильин писал(а):
Эппл на смену ОбжективСи выкатывает новый язык Свифт, который (надо же!) при целочисленном переполнении умеет бросать исключения, автоматически управляет памятью и проверяет границы массивов.
Указание типов переменных при объявлении является необязательным.

http://en.wikipedia.org/wiki/Swift_(App ... g_language)
https://developer.apple.com/swift/


Если что - ObjC тоже автоматически управляет памятью, равно как и swift. Да, и в swift'е сборщика мусора нет (а в ObjC сборщик мусора это depricated feature).

А исключений в свифте нет вовсе :-)

Автор:  Александр Ильин [ Пятница, 06 Июнь, 2014 18:06 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Не в тему, но в то же время в тему, просто хочу поделиться. Сегодня ошибку на работе нашёл в плюсовом коде. Цикл такого вида:
Код:
for (...)
{
   int b = -1;

   if (something)
   {
      b = (x1 == x2);
   }
   else if (something else)
   {
      b = (x3 == x4);
   }
   else if (something else)
   {
      b = (x5 == x6);
   }
   else if (something else)
   {
      BOOL b = (x7 == x8);
   }
   else if (something else)
   {
      b = (x9 == x10);
   }
   else if (something else)
   {
      b = (x11 == x12);
   }
   else if (something else)
   {
      b = (x13 == x14);
   }
   else
   {
      ASSERT(0);
   }
 
   if (b == TRUE)
   {
      // do something
   }
   else if (b == FALSE)   
   {
      // do something else
   }
   else ; // Do nothing.
}
Несколько повторяющихся блоков if с похожим, но разным содержимым, в каждом по два объявления переменных (здесь не показаны). То, что здесь достаточно легко заметить, там просто визуально терялось. В результате имеем случайные несрабатывания.

Автор:  Пётр Кушнир [ Пятница, 06 Июнь, 2014 19:34 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Вот разработчики Эльбруса (МЦСТ) вроде не должны быть дураками, а первым делом создали компилятор С для своего камня. Турбостокгольмский синдром, не иначе.

Автор:  Alexey Veselovsky [ Пятница, 06 Июнь, 2014 20:07 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Александр Ильин писал(а):
Не в тему, но в то же время в тему, просто хочу поделиться. Сегодня ошибку на работе нашёл в плюсовом коде. Цикл такого вида:
...
Несколько повторяющихся блоков if с похожим, но разным содержимым, в каждом по два объявления переменных (здесь не показаны). То, что здесь достаточно легко заметить, там просто визуально терялось. В результате имеем случайные несрабатывания.


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

Автор:  Info21 [ Пятница, 06 Июнь, 2014 21:53 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Пётр Кушнир писал(а):
Турбостокгольмский синдром, не иначе.
Надо запомнить :)

Автор:  Александр Ильин [ Суббота, 07 Июнь, 2014 00:46 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Alexey Veselovsky писал(а):
Насколько я понимаю, в данном случае это вообще не от языка зависит.
Зависит. Достаточно не смешивать объявления переменных с кодом.
Alexey Veselovsky писал(а):
То есть в языке то достаточно средств для декомпозиции такой вот императивной лапши. Просто программист не почесался.
Ога, и даже goto есть. Просто не все чешутся.
Просто...

Автор:  Рыжий [ Суббота, 07 Июнь, 2014 08:26 ]
Заголовок сообщения:  Re: стыдоба от Эппл

goto - это не средство, goto - это эстетика, к задачам отношения не имеющая. Ну как "маленькое черное платье" без пояса - можно, но не прикольно.

Автор:  Info21 [ Суббота, 07 Июнь, 2014 08:30 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Меня изумляет до потери пульса, что подобные диспуты до сих пор возможны.

Автор:  Peter Almazov [ Суббота, 07 Июнь, 2014 19:44 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Александр Ильин писал(а):
Alexey Veselovsky писал(а):
Насколько я понимаю, в данном случае это вообще не от языка зависит.
Зависит. Достаточно не смешивать объявления переменных с кодом.

C#, 1 Error:
A local variable named 'b' cannot be declared in this scope because it would give a different meaning to 'b', which is already used in a 'parent or current' scope to denote something else

Автор:  Рыжий [ Суббота, 07 Июнь, 2014 21:05 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Изображение :roll:

Автор:  Рыжий [ Воскресенье, 08 Июнь, 2014 09:37 ]
Заголовок сообщения:  Re: стыдоба от Эппл

Не так. Вот так.
Изображение :mrgreen:

Страница 1 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/