IT в России и мире в реалиях мирового кризиса
1,287,357 7,816
 

  Pnb ( Слушатель )
08 мар 2016 20:07:49

Тред №1068977

новая дискуссия Дискуссия  274

Цитата: TAU от 04.03.2016 00:56:59Увы! Приведенное в цитате - яркая иллюстрация уровня развития... Вот именно, что программер.
Нужно четко различать программеров  и  инженеров-программистов...

Чем отличается инженер-программист от программиста? Примерно тем же, чем автолюбитель отличается от шофера-профессионала. Первого волнует то, куда и зачем он едет, а не сам процесс езды. И что он будет делать там куда приедет. А езда для него - необходимое зло. Чем ее меньше, тем лучше.

Можно предположить, что 90% если не больше программистов заняты так называемыми бизнес-приложениями. Эти приложения переписывают информацию из одного места в другое почти без изменения.
Вычитал из менюшки - вписал в базу. Прочитал из базы - передал по сети. Получил по сети - вписал в другую базу. И т.д.
Ну вот, чтобы от непроходимой тупости такого занятия они не стрелялись в массовом порядке, им и предлагают для развлечения различные языки программирования. Вроде как освоил новый язык, что-то новое в жизни. Вырос профессионально.

Второе, откуда берутся все эти новые языки. В штатах еще осталась и жива школа написания новых языков и новых компиляторов. Если не будет спроса на новые языки, это дело умрет. А тогда и во всем мире умрет.
Так что здесь у амеров "бремя белого человека" / единственной сверхдержавы, они вынуждены отстегивать что-то на новые языки чтобы все это было живое.

Поэтому появление Ады, в частности, легко объяснимо.
Цитата: Lapsha от 03.03.2016 18:52:23армейцы в Штатх и НАТО пользуют язык Ада, а не С/С++.


Зачем нужен Пентагону свой собственный язык программирования? А зачем нужна российским госструктурам своя ОС? За тем же самым.


Цитата: Superwad от 03.03.2016 08:26:16набор кода (набивка текста) 17 %, отладка 70 %.

Вообще-то основное время уходит на то чтобы думать. А не на то чтобы по клавишам бацать.

Нормально так: 70% обдумывание - проектирование, 15% набивка-правка текста, 15% отладка. Если отладка занимает 70%, то это просто означает что вы сначала что-то сбацали, а потом начинаете думать, почему виснет.

Программы виснут у программиста потому что он сам нихрена не понимает, что же он там такое напрограммировал.

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

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


Цитата: Superwad от 03.03.2016 07:11:552. Грамотный программист оформит код как положено, а профи - с комментариями. Квалификацию программера никто не отменял.


Цитата: Lapsha от 03.03.2016 07:40:06В теории - да.

На практике - только если сильно на кодера насядут. Потому что у хорошо квалифицированного кодера практически не бывает времени на эпистолярные отвлечения. А когда время бывает он с гарантией займется чем-то более интересным.
Максимум - один-два коротких комментария на страницу. Максимум. А в среднем и того нет. 
Открытого кода в сети - моря разливанные. Любого уровня продуктов.


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

Бейте по рукам сучонка за код без комментариев. Хотя он сам себя и считает "хорошо квалифицированным кодером", заявляет, что "у него нет времени на эпистолярные отвлечения", и он лучше "займется чем-то более интересным".
Пока молодой. Когда заматереет, нужно будет вообще руки нахрен отрывать.

Потому-то этот код и открытый, что это быдлокод. Берите, не жалко.

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

В одной фирме, где я когда-то работал, были корпоративные стандарты оформления кода на С. Правила расстановки пробелов, скобок, табуляции, наименования переменных, констант, функций, объектов (где большие и где маленькие буквы, где подчерки и т.д.).
Написанный и отлаженный код сдавался другой группе на проверку оформления, в том числе и на наличие комментариев.

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

Индусы плодятся в геометрической прогрессии. И в Москве их сейчас уже не меньше чем в Индии.

П.С.
Вот для сторонников программирования на С в стиле с goto  меткой quit: [оказывается, такие еще есть. Ну надо же] хочу поделиться таким макросом:


// Если выполнено условие 'a' распечатать текст условия
//  в лог-файл и идти на метку конец функции
#define CHK(a) if (a) {DBG_PRINT(#a); goto end;}

// И пример как выглядит текст
long read_array(char *name, long bytes_to_read, char *array)
 {
 // По умолчанию возвращает код ошибки -1
 long ret = -1;
 FILE *file = NULL;

 // Ошибка если неверные параметры
 CHK (bytes_to_read  <  =  0);
 file = fopen(name, "rb");
 // Ошибка если файл не открылся
 CHK (file == NULL);
 // Ошибка если не прочиталось
 CHK (fread(array, bytes_to_read, 1, file) != 1);

 // Возвращает 0 - ОК
 ret = 0;
 end:
 if (file)
   fclose(file);
 return ret;
 } /* end read_array */

Если все выдержано в таком стиле, то в лог-файле остается стек вызовов, когда что-то не срабатывает.
И вам могут прислать этот лог откуда-нибудь из Самары или из Астрахани, где это произошло.
Я и не представляю даже как можно по-другому программировать на чистом С. Вернее, очень даже хорошо представляю что будет если программировать иначе. Видел много раз, и лучше не надо.

Отредактировано: Pnb - 08 мар 2016 20:17:47
  • +0.07 / 8
  • АУ
ОТВЕТЫ (5)
 
 
  adolfus ( Слушатель )
08 мар 2016 23:51:51

1) Появление Ады вызвано стремлением сократить затраты на разработку и эксплуатацию сложного ПО для систем с высокими требованиями к надежности. И у нее это получается. Поэтому Ada -- один из четырех языков, на долю которых приходится по разным источникам от 95 до 98 процентов софта, на котором держится современный мир.

2) Российским госструкутрам нужна своя, в смысле, полностью контролируемая ОС, чтобы повысить уровень информационной безопасности -- прямые и косвенные потери от использования проприетарного софта и прошивок, контролируемых вероятным противником не менее, чем полностью (через IBM и Oracle, как минимум), превышают все мыслимые затраты на разработку и развитие своих.
Правительству, ПМСМ, следует создать децел команд и организовать их в консорциум под своим жестким контролем. Команды, полностью финанисируемые государством, присоединились бы к тестированию и разработке линукс-ядра, системного софта и наиболее востребованных  приложений. Параллельно с этим нужно разрабатывать несколько смежных дистрибутивов -- серверный, десктоп, и другие, помельче. Не забыть про встраиваемое, для чего потребуется ядро жесткого реального времени. Здесь тоже несколько классов -- от вертикальных систем, типа QNX, до гипервизорных, обрабатывающих на низком уровне потоки событий, и распределяющих их обработку по сотням узлов. Как и в области производства вооружений, можно выпускать варианты для себя и верифицируемые варианты на экспорт.
  • +0.06 / 6
  • АУ
 
  adolfus ( Слушатель )
09 мар 2016 00:01:59

Ну да, gcc -- это быдлокод, а VisualStudio -- шедевр программирования.
Что-то в ТОП-500 суперкомпьютеров сплошь быдлокодеры пролезли.
Вот, например, интернет на быдлокоде выстроен. Какой-то странный быдлокод, не находите?

 

 
  • +0.03 / 3
  • АУ
 
  TAU ( Слушатель )
10 мар 2016 05:58:35

1. Недопустимое упрощение. Языки программирования могут различаться концептуально, по модели вычислений. Отличаться коренным образом друг от друга. Появляются языки программирования не только для развлечения, почему - можно отдельное исследование писать )
2. Вы знакомы с понятием "кризис программирования"? А с "критически важная система"? Вот поскольку имевшиеся языки не позволяли в должно мере обеспечить производительность труда и написание надежных программ, Пентагон и объявил конкурс. Имел все причины.
3. Если отладка (автономная, совместная, комплексная, испытания, аттестационные испытания,...) занимает 70% - это значит, вы имеете дело с чем-либо крайне важным. Критически важным. Если вы считаете, что 15% для отладки - нормально, вы как раз из тех 90% "мэйнстримовых" программистов. Что, конечно, не отменяет важности тщательной постановки задачи и проектирования.
4-5. А вот с этим полностью согласен.
  • +0.01 / 1
  • АУ
 
  Lapsha ( Слушатель )
10 мар 2016 10:58:10

Фееричненько!

Причем все подряд, без исключения, включая незацитированное.

Интересен этот феномен (пока что наблюдал только в бСССР) - подобная необъяснимая спесь. Особенно у айтишников всякого разлива. Сам себе пока придумал объяснение такое: едет крыша от осознания того, что имеют доход существенно выше среднего у окружающих.

Одно замечание: выражений подобных "бить сучёнка по рукам", "индусы" и т.п. следует стыдиться произносить публично. Ну, примерно как публично испражняться.
Хотя и понимаю, что все эти воззвания бесполезны.


Если все выдержано в таком стиле, то это и есть яркий пример быдлокода.

1. Я так понимаю, тут изображен образец, как надо комментить код. В данном коде комментировать совершенно нечего, поскольку все предельно очевидно. Комменты пишутся для кодеров, а не для дебилов. Комментируются только неочевидные вещи. А не 
// А вот тут складываются числа а и b

2. Почему имена параметров неговорящие? Почему name, а не fName, fpName, fileName и т.п.?

3. Если уж проверяется bytes_to_read, почему не проверяется указатель array на NULL?

4. Этот метод исходя из любой логики должен возвращать количество прочитанных байтов, а не 0 и -1.

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

6. Стек вызовов подобный лог будет иметь только в случае единственного потока. При многопоточном исполнении будет хаос.

7. fread(array, bytes_to_read, 1, file) != 1 по-видимому, предполагалось как fread(array, bytes_to_read, 1, file) >= -1

Представить, как можно по-другому программировать на чистом С не проблема.
Сишникам хорошо известна техника setjmp - longjmp. На ее основе существует очень изящная библиотека exceptions4c:
https://github.com/g…ceptions4c
И код будет выглядеть вот примерно так (безотносительно к предыдущему коду):

try{
        foo = get_user_input(buffer, 1024);
}catch(BadUserInputException){
        foo = 123;
}finally{
        free(buffer);
}

Вот тут, действительно, изящнее не придумаешь. Но эту феньку очень опасно пользовать в проектах, где есть еще и С++.

Пару слов о технике setjmp - longjmp. Это просто сногсшибательный трюк, безумно остроумный и непонятно каким образом пришедший тому/той умничке в голову. Отличный вопрос для собеседования, кстати. Но только если требования очень высокие. Т.с., факультативный вопорс.
  • +0.02 / 2
  • АУ
 
 
  TAU ( Слушатель )
10 мар 2016 17:24:37

Подпишусь под каждым словом! Улыбающийся
  • +0.01 / 1
  • АУ