Linux & C/C+

2 ТС: мне жутко интересно, чем занимается ваша лаборатория и я не понимаю, зачем нужно ВСЕХ насиловать обрывочными знаниями по С/С++, вместо того, чтобы ВСЕХ оставить в покое и взять на работу ОДНОГО профессионала. я уверен, что один спец по гнусу будет работать в разы продуктивнее двух десятков аматоров, для которых этот си - просто гвоздь в жопе.

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

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

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

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

и вот еще хинт: не для освоить быстро, а на долгосрочную перспективу - если есть достаточно глубокое знание численных методов, можно полистать исходники GNU Scientific Library, она написана вполне вменяемо (на С), но при этом читается легко и быстро. так вот, глядя, как там реализованы известные алгоритмы - можно много чего понять и многому научиться.

p.s. интеловские компилляторы есть под Linux в бесплатной версии - для разнообразия можно и icc поюзать. он весьма хорош (но в вычислениях с плавающей точкой надо аккуратно с оптимизациями - может накуролесить).
 
ну, на самом деле, это устоявшаяся практика - физики пишут себе софт сами. это выгодней, потому что физику научиться программировать (а в нормальных университетах этому учат сразу) проще, чем программисту - осознать все тонкости вычислительной задачи. в наших условиях добавляется еще и то, что академические организации не могут платить адекватные зарплаты программистам (хотя есть, конечно, много программистов, которые такую работу потянут).

на самом деле, каждый должен заниматься своим делом. программисту ничего осознавать не нужно. задача программиста - выполнить постановку задачи и не придумывать никакой отсебятины. т.о. все неочевидные тонкости возлагаются на менеджера проекта или постановщика задачи. и я уверен, что это куда как более эффективно, чем отрывать людей от творческого процесса и заставлять заниматься побочной деятельностью. точно так же и программист - любой нормальный программер сможет разобраться в физике любой сложности. вопрос в другом - сколько он на это потратит времени и зачем, если он всё таки программер.

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

организационные плюсы си++ никак не влияют на производительность. компилятор разворачивает высокоуровневый код в набор ассемблерных команд, которые транслируются в машинные коды и выполняются процессором. все эти классы, интерфейсы и прочее - ни что иное как высокий абстрактный синтаксис для более упорядоченного написания кода. т.е. реализация принципа - код пишется для людей, а не для машин. на ассемблерном уровне все эти методы классов разворачиваются в команды типа JMP, CALL и т.п. так что тормознуть производительность, грубо говоря, можно только одним способом - кривым алгоритмом.


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

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

хехе, видели мы эти "программы":
int massiv[10]
massiv[11] = 5.5;
// shto za hujnya!!!!!!!1111

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

насколько я понимаю они не программируют, а используют готовую среду с готовыми библиотеками (она и называется ROOT), которая требует только задания алгоритма на C++. Так что программист тут ни к чему. C++ тут по сути используется как скриптовый язык.
Несколько необычный выбор для языка, т.к. C++ довольно тяжел и неудобен для скриптовых задач. Но видать наверху виднее :)

И вобщемто все правильно физик должен поближе к расчетам быть, чтобы не сильно абстрагироваться :D
 
так ведь приучает к порядку!!!!

честно говоря, я не думаю что C++ к порядку приучает, т.к. у него черезчур гибкий синтаксис. В итоге многие вещи часто делаются не по правильному, а как побыстрей :) Впрочем кажется мы уже это обсуждали :D
 
на самом деле, каждый должен заниматься своим делом.
...

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

компилятор разворачивает высокоуровневый код в набор ассемблерных команд, которые транслируются в машинные коды и выполняются процессором.
...

только иногда этих ассемблерных команд слишком много ;)

...
C++ тут по сути используется как скриптовый язык.
...

не совсем (вернее, не всегда смысл такой), но это ничего особо не меняет. кстати, есть PyROOT.

я вообще заметил такую тенденцию: есть физики старшего поколения, они любят Fortran, часто С, но обычно не воспринимают Python и плюсы. а вот те, кто помоложе - наоборот, чаще всего используют С/C++ и Python.

для Py уже достаточно написали интересных вещей (numpy, scipy - из самых известных), чтоб можно было по большей части в сугубо прикладных задачах отказаться от работы с C или фортраном напрямую. а учитывая удобство Python для административных задач - вообще получается отлично. вместо традиционного "закинуть по scp/зайти по ssh, выдать менеджеру очереди задачу, ждать, тащить результаты обратно" - можно обойтись одним единственным скриптом, который все сам сделает, не отходя от кассы.
 
честно говоря, я не думаю что C++ к порядку приучает, т.к. у него черезчур гибкий синтаксис. В итоге многие вещи часто делаются не по правильному, а как побыстрей :) Впрочем кажется мы уже это обсуждали :D

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

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

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

ннимать на работу в организации и нанимать на решение конкретной задачи - с утра были две разные вещи.
вы хотите сказать, что ВЫ физики никогда не обращаетесь к математикам? ну тогда ВЫ гуевые физики, что сказать...
 
ага))) кажется тогда Вы были несколько иного мнения.
что-то поменялось? не угодно ли написать "я ошибался, прости меня дядя Маусфлай"?

да? ну может быть :) С того времени мне довелось поковыряться в большом проекте на C++, в контрасте после C# выглядело все конечно мрачновато :)
 
да? ну может быть :) С того времени мне довелось поковыряться в большом проекте на C++, в контрасте после C# выглядело все конечно мрачновато :)

может, может. рекомендую таблетки для памяти:
язык приучает к порядку

и?
что нужно сказать?
(оволс еонбешлов)
 
И вобщемто все правильно физик должен поближе к расчетам быть, чтобы не сильно абстрагироваться :D

это ты на коня в вакууме намекнул? :D

вообще, си, как скриптовый язык - сильно :ги: колоть орехи сжимая ягодицы - вот предел совершенства :yahoo:
 
может, может. рекомендую таблетки для памяти:


и?
что нужно сказать?
(оволс еонбешлов)

вообщето в том сообщении речь шла про Си, а не C++, насчет Си я мнения не менял. Но в качестве скриптового языка Си опятьже не подходит, его конек - скорость, но из-за скорости приходится много внимания уделять управлению памятью.
 
ннимать на работу в организации и нанимать на решение конкретной задачи - с утра были две разные вещи.
вы хотите сказать, что ВЫ физики никогда не обращаетесь к математикам? ну тогда ВЫ гуевые физики, что сказать...

как-то у Вас все перепуталось в голове:)



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

если не секрет, о каких отраслях математики идет речь? интересно.
 
Останнє редагування:
Всем спасибо за советы!!! Тогда проверка не дошла, все оплатили сверху ))

Но вот прошло уже пол года, отсутствие практики С++ на протяжении 5 лет говорит о том что надо чтото типа С++ for Dummies (кстати эту книгу дали мне):D. Так же посоветовали С++ youtube tutorial, вроде бы неплохой



Проблема в том что никогда под Линуксом не програмил, вернее даже под Саентифик Федора.

Как стандартно все делают в моей новой группе- весь смысл что надо с терминала заходить на удаленную машину и там в Емакс пишут и эксекьютят все в ROOT( Церновском).

Мне сейчас начальник давший книжку сказал просто пройти все примеры в ней. Но где пройти- я имею ввиду какая среда, программа или где-например, если я делаю даже функцию main для Hello World ,то ROOT не понимает и надо делать рядом 2й файл где определять фунцию.

Соответственно каждый раз надо чтото подшаманивать со вторым файлом для каждого примера из книжки. В последний раз даже опытный работник просидел 15 минут думаю почему ошибка.:confused:

Оно то конечно хорошо иметь ошибку-решить ее-понять- выучить.:клас:
НО, как я могу решать эти ошибки, ведь я взял легчайшую книгу чтобы пройти ее и выучить азы, а мне выдает ошибки решение которых требует БОЛЕЕ высокого уровня знания языка.:confused::confused:

Собствено вопроса ДВА:

1.Хотелось бы выполнить волю шефа и проделать примеры тупо копируя книжку - на деле я не могу делать это с ROOT- но вроде как можно с g++ или gcc. Идти этим путем? Или как то еще можно? Вариант Висуал Студия мне сказали отбросить.

2. ROOT все таки очень важен- вся работа через пол года-год должна быть в нем, но получается тогда книжка и тюториал не нужны- я не могу им дословно следовать!? При этом я в одиночку сам не могу создавать 2 файла, а может три, и чтото конкретно каждый раз менять - я сейчас ПОЛНЫЙ чайник....я конечно пытаюсь и уже не одну неделю, но это как пытаться решить пример по квантовой механике не зная ее вообще. Мне по сути как школьнику дали книжку в которой для мменя примеры по квантам :D:( На изучение C++ Linux-ROOT дали год чтобы хоть чтото знать....как бы поступnли в моем случае?Каков порядок действий?

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

Сейчас более менее пытаюсь делать в тупую и работает по сайте С++ в Линукс с Нуля:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі


И также по синтаксису Керниган и Ричи 2е издание какихто мохнатых готов, но вроде хорошо написано.:)
 
Назад
Зверху Знизу