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 (...) Несколько повторяющихся блоков if с похожим, но разным содержимым, в каждом по два объявления переменных (здесь не показаны). То, что здесь достаточно легко заметить, там просто визуально терялось. В результате имеем случайные несрабатывания.
{ 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. } |
Автор: | Пётр Кушнир [ Пятница, 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: стыдоба от Эппл |
Автор: | Рыжий [ Воскресенье, 08 Июнь, 2014 09:37 ] |
Заголовок сообщения: | Re: стыдоба от Эппл |
Не так. Вот так. |
Страница 1 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |