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
9144
Цюрих
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
10905
Crna Gora
Programer в сообщении #1545629 писал(а):
Есть книга «Совершенный код».
Не понимаю, как McConnell может критиковать, допустим, плохое форматирование и при этом расставлять в примерах на C++ фигурные скобки в стиле K&R. Наилучший — стиль Оллмана, терпимы несколько близких стилей. Но нет ничего более уродливого, чем открывающая фигурная скобка в конце строки. Это затрудняет визуальное восприятие логики программы (разбиение на вложенные блоки) и, таким образом, провоцирует ошибки.

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


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

 Профиль  
                  
 
 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
10905
Crna Gora

(Оффтоп)

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

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

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



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

Сейчас этот форум просматривают: Dmitriy40


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

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