2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5  След.
 
 Re: Научный код
Сообщение09.01.2022, 01:33 
Заслуженный участник


09/05/12
25179
rockclimber в сообщении #1545567 писал(а):
Писать качественный код в том смысле, который имеет в виду ТС, насколько мне известно, не учат вообще нигде.
Да нет, подобное бывает. Но редко (в России это штучные ВУЗы со штучными же специальностями), так что результат просто растворяется в общей массе.
mihaild в сообщении #1545569 писал(а):
А еще потому что один человек в разных ситуациях пишет код сильно отличающийся по качеству:)
Да, и это тоже. :-)

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 03:43 


08/01/22

41
Geen в сообщении #1545555 писал(а):
Или вот опять же, хочу без знания устройства кода MS Word "доработать" его что бы он LaTeX понимал - ведь главное требование это "лёгкая доработка"....

MS Word имеет код закрытый, а желающим что-то навесить своё предоставляется язык на базе Visual Basic. Так что если заморочиться то всё возможно.

-- 09.01.2022, 03:50 --

mihaild в сообщении #1545569 писал(а):
Не знаю, что вы понимаете под качественном кодом в смысле ТС, но вообще писать качественный код учат в ШАДе, учат на ФКН (я лично учил), и подозреваю еще много где.

ШАД готовит сотрудников в Яндекс. Яндекс набирает олимпиадников, у олимпиадников самый ужасный код, даже учёным сложно с ними соревноваться. Всё дело в том что в Яндексе пишут не коммерческий код (программы Яндекс не продаёт, они крутятся внутри компании).

-- 09.01.2022, 04:01 --

rockclimber в сообщении #1545567 писал(а):
]
Господа, это даже не смешно. Я 15 лет работаю исключительно в коммерческих компаниях. Где там ТС рагзлядел какой-то особо хороший и качественный код - я не знаю.

Тоже около 15 лет в IT-индустрии. И скажу, что таких ошибок как в двух приведённых примерах в коммерческом коде опытным разработчикам не прощают. Причём эти ошибки были выявлены автоматически, то есть являются абсолютно типовыми. Сколько скрывается в научном коде менее тривиальных ошибок это одному Аллаху известно. Дополнительно к анализу с помощью программ в коммерческих компаниях проводят код-ревью коммерческого кода вручную.

-- 09.01.2022, 04:12 --

Geen в сообщении #1545555 писал(а):
И где же примеры? Вот, допустим, я беру "очень коммерческий продукт" - игровой движок, Unity к примеру, - расскажите мне как его "легко доработать" что бы можно было сделать игру по типу Portal (но с честной физикой и переменным ускорением свободного падения)?

Мне что-то казалось, что в Unity давно честная физика с аппаратной поддержкой (PhysX). И уж ускорение не проблема сменить. В CS чёрт знает какого года выпуска (около 2001) ускорение менялось игроком в процессе игры.

-- 09.01.2022, 04:23 --

Geen в сообщении #1545555 писал(а):
А может быть Вы мне расскажите как замечательно устроен "очень коммерческий софт" сопровождающий какое-нибудь оборудование?

Это как правило тоже очень плохой код. Но замечу, что в данном случае коммерческий не код, а оборудование.

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 06:03 


10/03/16
4444
Aeroport
Geen в сообщении #1545563 писал(а):
Ага, особенно если самокат обычный...


А какой ещё бывает? А, не, до меня дошло )

Geen в сообщении #1545563 писал(а):
среднем код первых значительно лучше. Банально потому, что учёные в среднем умнее.


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

rockclimber в сообщении #1545567 писал(а):
Я 15 лет работаю исключительно в коммерческих компаниях. Где там ТС рагзлядел какой-то особо хороший и качественный код - я не знаю.


А в научных компаниях Вы сколько поработали, чтобы иметь возможность сравнивать?

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 09:17 


30/09/20
78
Programer, а оцените, пожалуйста, вашим профессиональным взглядом код одного известного олимпиадника. Каков он, как считаете?

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 10:07 


27/08/14
207
Verkhovtsev в сообщении #1545579 писал(а):
Programer, а оцените, пожалуйста, вашим профессиональным взглядом код одного известного олимпиадника. Каков он, как считаете?
Тут следует уточнить, какую часть смотреть - сначала идут скопированные заголовочные файлы, а сам код начинается с 651 строки. В целом это обычный write-only олимпиадный код.

Используется синтаксис C++
class GVzveshennieVozrastayushchiePodposledovatelnosti {

:lol1:

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 10:22 
Заслуженный участник
Аватара пользователя


16/07/14
9114
Цюрих
Programer в сообщении #1545572 писал(а):
у олимпиадников самый ужасный код
Внезапно, на олимпиадах и на работе человек пишет код по-разному.

Вообще, чтобы это куда-то уехало, прошу дать хоть какие-то определения "коммерческому коду" и "хорошему коду".
Programer в сообщении #1545572 писал(а):
И скажу, что таких ошибок как в двух приведённых примерах в коммерческом коде опытным разработчикам не прощают
Ну вы посмотрите рекламу того же PVS Studio - полно аналогичных, и даже более серьезных ошибок, в куче написанных "опытными разработчиками" проектов.

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 10:56 
Аватара пользователя


29/05/17
806
rockclimber в сообщении #1545567 писал(а):
Господа, это даже не смешно. Я 15 лет работаю исключительно в коммерческих компаниях. Где там ТС рагзлядел какой-то особо хороший и качественный код - я не знаю.

Ну, да. В коммерческих компаниях качественным кодом, считается код который Team lead смержит в master :-)

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

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 11:07 


27/08/14
207
Подтверждаю - в коммерческих проектах точно так же встречаются абсолютно дурацкие ошибки - и при этом разработчика, написавшего это даже не увольняют :-). Мне кажется на качество кода больше влияет то, как он используется. Если у нас утилита, которая считала данные, обработала, выдала результат и завершилась - то в ней могут содержаться просто дикие ошибки по работе с памятью, но они никогда не будут замечены при её использовании. С другой стороны одна такая ошибка в каком-нибудь сервисе будет приводить к его периодическому крэшу - и соответственно будет рано или поздно исправлена.

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 12:48 
Заслуженный участник
Аватара пользователя


22/06/12
2129
/dev/zero
Programer в сообщении #1545572 писал(а):
ошибок как в двух приведённых примерах в коммерческом коде опытным разработчикам не прощают.

Ога. Расстреливают перед строем.

Наброс, конечно, интересный, хотя и мне довелось нечитабельные фортрановские портянки от начуных светилищ [(c) Geen] ковырять.

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 14:28 
Заслуженный участник


09/05/12
25179
Progger в сообщении #1545590 писал(а):
Мне кажется на качество кода больше влияет то, как он используется. Если у нас утилита, которая считала данные, обработала, выдала результат и завершилась - то в ней могут содержаться просто дикие ошибки по работе с памятью, но они никогда не будут замечены при её использовании. С другой стороны одна такая ошибка в каком-нибудь сервисе будет приводить к его периодическому крэшу - и соответственно будет рано или поздно исправлена.
Вот это хорошая мысль, которую стоит развить дальше.

Поставим себя на место человека, написавшего эту утилиту. Она ему (и его ближайшим коллегам) нужна только в таком виде, используется только в "разовом" режиме и заведомо не станет массовым продуктом, причем разработчик знает об этом заранее. Тогда вопрос: игнорирование разработчиком проблем работы с памятью означает, что он не умеет с ними бороться (или просто не видит)? Или же он просто оптимизирует собственную работу?

Просто 99% подобных обсуждений сводятся к тому, что научный код "не соответствует" требованиям, предъявляемым к творчеству разработчиков прикладного ПО. Но как-то не принято задумываться о том, что заметная часть этих требований в такой ситуации неактуальна - просто потому, что их аккуратное соблюдение обходится во всех смыслах дороже, чем редкие проблемы, вылезающие при несоблюдении.

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 15:01 


08/01/22

41
mihaild в сообщении #1545583 писал(а):
Вообще, чтобы это куда-то уехало, прошу дать хоть какие-то определения "коммерческому коду" и "хорошему коду".

Коммерческий код - код программного обеспечения, идущего на продажу путём массового тиражирования.
Хороший код определить сложнее. Есть книга «Совершенный код». То что соответствует всем требованиям из неё можно считать хорошим кодом.

-- 09.01.2022, 15:29 --

Verkhovtsev в сообщении #1545579 писал(а):
Programer, а оцените, пожалуйста, вашим профессиональным взглядом код одного известного олимпиадника. Каков он, как считаете?

Ужасный код. В начале копипаста из разных мест интернета. Обычная практика плохих разработчиков - программирование путём гугления. Разумеется, без проверки на правильность. Копипаста не менее ужасна чем основной код.

По классу в конце
1) Непонятно зачем макросы all, sz снижают читаемость, на олимпиаде размер текста программы оценивают?
2) Фичи новых редакций С++ (auto и пр.) приводят к плохой портируемости
3) vector<vector<int>> это ошибка в некоторых компиляторах. Между > > надо ставить пробел.
4) Модульное программирование отсутствует как класс в лучших традициях олимпиадников. Всё в одной функции.
5) Комментарии отсутствуют в лучших традициях олимпиадников. Непонятно даже какую задачу решают.

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 19:20 
Заслуженный участник
Аватара пользователя


23/07/08
10894
Crna Gora
Programer в сообщении #1545629 писал(а):
Есть книга «Совершенный код».
Не понимаю, как McConnell может критиковать, допустим, плохое форматирование и при этом расставлять в примерах на C++ фигурные скобки в стиле K&R. Наилучший — стиль Оллмана, терпимы несколько близких стилей. Но нет ничего более уродливого, чем открывающая фигурная скобка в конце строки. Это затрудняет визуальное восприятие логики программы (разбиение на вложенные блоки) и, таким образом, провоцирует ошибки.

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 20:32 
Заслуженный участник


20/04/10
1871
Код пишут для разных целей и, соответственно, у него может быть разный стиль и читаемость. Если, например, учёный пишет некую программу исключительно для личного использования, то он может написать её так, как ему удобно и понятно. При этом правила использования макросов, расстановка скобок и другие нюансы могут быть самые разнообразные, лишь бы он в этом легко ориентировался. Если это совместная разработка программного продукта то, конечно, стоит придерживаться общих правил, чтобы другим программистам было легче разобраться в написанном, в этом случае нужно знать эти правила.
По-моему хороший код это тот, который корректно работает, и решает поставленную задачу. А ещё лучший код это тот, который справляется с этой задачей за меньшее время и использует меньше памяти. На случай же когда требуется чтобы все всё поняли, есть псевдокод, который вполне математичен, а его конкретную реализацию каждый может написать как ему больше нравится. Всё остальное это пустые споры, хотя бы потому, что бывают разные языки программирования.

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 20:43 


27/08/14
207
Programer в сообщении #1545629 писал(а):
2) Фичи новых редакций С++ (auto и пр.) приводят к плохой портируемости
3) vector<vector<int>> это ошибка в некоторых компиляторах. Между > > надо ставить пробел.
Неужели кто-то всё ещё пользуется настолько старыми компиляторами? Зачем они это делают?

 Профиль  
                  
 
 Re: Научный код
Сообщение09.01.2022, 20:49 
Заслуженный участник
Аватара пользователя


23/07/08
10894
Crna Gora

(Оффтоп)

Боже, Programer и Progger — разные участники. :facepalm: Простите оба.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 73 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Модератор: Модераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group