Глазами ученого на Хабре

Почитайте (сам исходный пост не айс, а вот комменты осилить очень рекомендую), очень здорово видна разница в образе мышления программистов и «ученых»:

https://habrahabr.ru/post/349624/

В комментах, правда, выясняется, что «ученый» тоже в говне моченый, но и «оппоненты» отжигают не по-детски.

PS И даже не знаю, какой из этих двух вариантов омерзительнее:

C и С++ изучают только программисты. Естественнонаучники (за очень редким исключением) учат программирование на Делфи, а потом всякие спецпакеты. Максимум пролог будет. Там не учат С98. Там не учат что памятью в принципе можно управлять. Тем более — что нужно. Учат так: вы придумываете правильный алгоритм, компьютер его выполняет. Учат как переписать алгоритм из головы на паскаль.

https://habrahabr.ru/post/349624/#comment_10682588

или

Я не знаю где вас учили, но на моём естественно-научном факультете сначала был курс C# (2 года). А теперь вообще идёт курс Java EE c Хадупами и всем фаршем.

https://habrahabr.ru/post/349624/#comment_10682700

Глазами ученого на Хабре: 11 комментариев

  1. «Он плавно доходит до координаты 6524, а затем вдруг его кусает бешеная блоха. Он скачет вверх и вниз абсолютно случайно и заполняет всё оставшееся полупространство справа кромешной тьмой. »

    В этом месте я вздрогнул от знакомой ошибки, которую сам ловил костылями.

  2. Только фортран! Остальное — пижонство.

    И это, Шура, ну прикрутите уже защиту от сперов, что-ли…

    1. Ну это в целом несколько осмысленнее, чем «учат программирование на Делфи, а потом всякие спецпакеты». И уж тем более куда полезнее для «естественнонаучников», чем «курс Java EE c Хадупами и всем фаршем».

      1. пункт первый: фортран был популярен даже в 90х, когда были более другие ЯП, во многом потому, что под него было огромное число расчетных библиотек на все случаи жизни, и что немаловажно они за годы были идеально отлажены. Т.е. там крайне невысокая вероятность того, как в хабровской статье аффтор пишет: подсунули пнг с тремя каналами оно все и упало.
        пункт второй: учить надо программированию, а не языку.
        Меня за период от средней школы до выпуска из ВУЗа учили бейску, паскалю и фортрану, а це, макро-11 и к580вм80, уж как-то сам освоил. Еще было крайне поверхностное знакомство с алмир на ЭВМ Мир-1 с видом на черное море, язык академика Ершова — не помню был или нет, вроде как в лекциях что-то было абстрактно-алгоритмическое.
        Но насколько я сейчас вспоминаю, учили не столько языку, сколько алгоритмам. В т.ч. и как не про#бать результат в условиях ограниченной разрядности, что бы не получить «Он скачет вверх и вниз абсолютно случайно».
        И когда сейчас меня вторую неделю агитируют перейти на питон, я задорно смеюсь и предлагаю привести более убедительные аргументы чем «это стильно, модно, молодежно!». :)

        1. Насчет пункта первого — книжку Numerical Recipes на Си++ окончательно переписали только к середине 2000-х, а что касается численных методов вообще — то вроде бы некоторые конструкции в фортране компилируются в машинный код эффективнее, чем аналоги на Си с плюсами или без.

          А про питон — некоторые модные молодежные штуки, типа нейросеток и прочего machine learning, сейчас принято делать именно на нем (с некоторыми плясками с бубном, чтобы включить CUDA, без нее там все печально).

          1. я не вижу причин, по которым конструкции фортрана должны компилироваться в более эффективный код, с учетом того, что Си, по сути, это немного приукрашенный ассемблер.
            А что касается питона какие у него в принципе преимуществ, за исключением упоротого синтаксиса?
            Про нейросети — опять же все упирается в библиотеки. Это как аргументация за питон: ну мы используем джанго. Так бля, не используйте джанго! Используйте джумлу и вордпресс! :)

            1. https://stackoverflow.com/questions/146159/is-fortran-easier-to-optimize-than-c-for-heavy-calculations — тут парочку примеров приводят; прежде всего дело в том, что в фортране реализованы полноценные массивы, а не сишные указатели; с точки зрения машины это почти одно и то же, но массивы — это еще и подсказка компилятору, что здесь можно заоптимизировать.

              1. Там слишком многа букф иностранных, я после суток без сна их не асиливаю. :)
                Но суть понятна, хотя хотелось бы заценить ассемблерный результат компиляции логически одинакового кода с двух разных языков, причем в тот ассемблер который я разумею, а разумею я макро-11. :)

                1. Так он логически не одинаков :) В си компилятор не может знать, что при вызове вот такой функции:

                  void transform (float *output, float const *input, float const *matrix, int *n)

                  output, input, matrix и n не пересекаются — поэтому не может заоптимизировать вложенный цикл (теоретически запись в output может испортить matrix). Фортрановские же массивы по определению пересекаться не могут.

                    1. for (i=0; i<*n; i++) - не цикл, да? :) Вот на самом деле пример очень хорош - "программист" бы действительно свел все к умножению матриц, "забыв" о том, что одна из матриц совсем маленькая - 4 элемента, и ее сразу можно загрузить в регистры.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *