scholar_vit: (Default)
[personal profile] scholar_vit

Университет перестраивает учебные планы. Мой курс поставили на осень, поэтому сейчас ничего не читаю. А тут оказалось, что в компании надо провести лекцию для новых разработчиков: объяснить, как работает CVS (чего только не приходится преподавать). С утра ощущал подъём настроения; даже намечавшаяся простуда куда-то ушла.

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

Собственно, этот журнал - тоже от эстрадности.

версии на стол

Date: 2007-01-17 08:31 pm (UTC)
From: [identity profile] sciuro.livejournal.com
CVS? Аптека? Биопсия хориона? :)

Re: версии на стол

Date: 2007-01-17 09:57 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Я, честно говоря, не понимаю, как я без этого жил раньше. Очень помогает в работе: у меня теперь все рукописи статей (в TeXе) под CVS.

Re: версии на стол

Date: 2007-01-18 03:22 am (UTC)
From: [identity profile] ny-quant.livejournal.com
Рискну предположить, что у Вас и персонального компьютера когда-то не было :-)

Re: версии на стол

Date: 2007-01-18 05:47 am (UTC)
From: [identity profile] scholar-vit.livejournal.com
Свои первые пару статей я печатал на машинке (на кафедре была машинка с английским шрифтом - дефицит). Диссер мне печатала машинистка. Формулы и там, и там вписывала мне жена.

Потом появились компьютеры и Chiwriter - помните этот ранний редактор, повсеместно сворованный в СССР? В США я года два писал статьи в Wordе - это было ужасно. Затем начал работать в LaTeXе, что и делаю до сих пор. Вначале я пользовался RCS, потом перешёл на CVS.

Re: версии на стол

Date: 2007-01-19 02:48 am (UTC)
From: [identity profile] ny-quant.livejournal.com
Chiwriter помню, а как же. Страшная штука... А я вот весь диссер напечатал в Wordе на Макинтоше - и ничего. И уравнения сам вписывал Equation Editor. Впрочем, это всё ерунда по сравнению с программированием в машинных кодах на ЭЦВМ Урал-1.

CVS - довольно симпатичный продукт, хотя под Windows есть проблемы: нельзя ставить working directory on network drive. Я сам не проверял, но системщики сказали, что CVS от этого умирает. В результате надо самому следить за back-up между commit'ами. Господи, вот ведь ацкая тема - и по русски-то не поговоришь.

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

Re: версии на стол

Date: 2007-01-19 05:12 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Вопрос с network drives обсуждался вот тут: http://cvsgui.sourceforge.net/newfaq.htm#remoteSandbox. Честно говоря, наши разработчики обо всём этом не знают и спокойно работают с network drives - и пока проблем не было.

Что касается наших разработчиков - то о них вот этот диалог: http://scholar-vit.livejournal.com/123838.html?thread=3601854#t3601854. Если коротко - очень возможно, что в резюме у них было написано, что они в CVS собаку съели. Но это ведь ни о чём не говорит.

Re: версии на стол

Date: 2007-01-17 09:03 pm (UTC)
From: [identity profile] vgramagin.livejournal.com
Я думаю, речь идет о репозитарии. Хотя чему там учить - две команды, пять ключей...

Две команды..

Date: 2007-01-17 09:51 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
cvs --help-commands
CVS commands are:
        add          Add a new file/directory to the repository
        admin        Administration front end for rcs
        annotate     Show last revision where each line was modified
        checkout     Checkout sources for editing
        commit       Check files into the repository
        diff         Show differences between revisions
        edit         Get ready to edit a watched file
        editors      See who is editing a watched file
        export       Export sources from CVS, similar to checkout
        history      Show repository access history
        import       Import sources into CVS, using vendor branches
        init         Create a CVS repository if it doesn't exist
        log          Print out history information for files
        login        Prompt for password for authenticating server
        logout       Removes entry in .cvspass for remote repository
        ls           List files available from CVS
        pserver      Password server mode
        rannotate    Show last revision where each line of module was modified
        rdiff        Create 'patch' format diffs between releases
        release      Indicate that a Module is no longer in use
        remove       Remove an entry from the repository
        rlog         Print out history information for a module
        rls          List files in a module
        rtag         Add a symbolic tag to a module
        server       Server mode
        status       Display status information on checked out files
        tag          Add a symbolic tag to checked out version of files
        unedit       Undo an edit command
        update       Bring work tree in sync with repository
        version      Show current CVS version(s)
        watch        Set watches
        watchers     See who is watching a file
(Specify the --help option for a list of other help options)

Это скорее 33 команды, верно? И ключей там хватает.

В последнем Cederqvist'е 184 страницы. Как раз на средних размеров курс.

Да, для простых вещей трех-четырех команд достаточно. Но тем и хорош CVS, что позволяет делать и очень непростые вещи.

Re: Две команды..

Date: 2007-01-17 10:12 pm (UTC)
From: [identity profile] vgramagin.livejournal.com
Ну ясен пень, что команд больше.

Но для реальной жизни достаточно трех с половиной: add, commit, checkout, ну еще раз в пару месяцев тэг прицепить. Я вот сейчас подумал - ничем больше за три года работы с cvs так и не воспользовался - и не потому, что не умел - нужды не было. Ах да, diff - ну это не считается, потому что делался из емакса.

Я ни в коем случае не наезжаю - просто мне сдается, что читать студентам курс по такой специфической системе, как cvs, нет особого смысла - ей пользоваться надо. За час можно в принципе объяснить, ЧТО можно сделать, а рассчитывать на то, что кто-то запомнит КАК - не стоит.

Re: Две команды..

Date: 2007-01-17 10:25 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Ну, я как раз про эти несколько команд и расказывал. Заодно объяснял, что и как надо ставить под CVS, и почему. Это ведь не курс был, а именно часовая лекция для наших разработчиков.

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

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

Re: Две команды..

Date: 2007-01-17 10:29 pm (UTC)
From: [identity profile] vgramagin.livejournal.com
Извини, я как-то пропустил, что речь не о студентах шла.

А как вы это автоматизировали?

Re: Две команды..

Date: 2007-01-17 10:32 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
В точности как написано в учебнике. Вставляю диск в привод, говорю cvs import и иду пить кофе. Возвратившись, смотрю в лог и говорю: "Хорошо весьма". Или, если возникли конфликты, рихтую напильником - но к счастью, такое было редко.

Re: Две команды..

Date: 2007-01-17 10:37 pm (UTC)
From: [identity profile] vgramagin.livejournal.com
Аааа, так напильник все-таки иметь надо!

Кстати, что в CVS и правда хорошо сделано - так это automerge, perforce мне так же хорошо не удалось заставить работать.

Re: Две команды..

Date: 2007-01-17 10:45 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Если разработчик А принял длину поля в message в 6 байтов, а разработчик B в это же самое время - в 8 байтов, то никакая программа не поможет. Умная система должна делать две вещи: (1) автоматически сделать всё, что можно сделать автоматически и (2) ясно объяснить, что сделать не удалось, почему, и где именно надо приложить напильник.

Re: Две команды..

Date: 2007-01-17 10:47 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Кстати, а почему perforce не может использовать стандартные алгоритмы diff3?

Re: Две команды..

Date: 2007-01-17 10:55 pm (UTC)
From: [identity profile] vgramagin.livejournal.com
А пес его знает, может, у меня руки не оттуда растут. Хотя я глубоко не копал - мне мерджать нужно было всего пару раз, я ручками все сделал.

Re: Две команды..

Date: 2007-01-17 10:57 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Для меня merge - операция довольно частая... Может, именно поэтому я так CVS люблю.

Re: Две команды..

Date: 2007-01-17 10:30 pm (UTC)
From: [identity profile] vgramagin.livejournal.com
Кстати, после трех лет cvs были четыре с perforce... насколько же он все-таки удобней...

Re: Две команды..

Date: 2007-01-17 10:35 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Я в последнее время посматриваю на subversion. Но пока меня CVS устраивает, а её проблемы не сильно напрягают.

Re: Две команды..

Date: 2007-01-17 10:36 pm (UTC)
From: [identity profile] vgramagin.livejournal.com
Там, где я сейчас работаю, только что с subversion перешли на perforce

А бесплатность все-таки фактор весьма и весьме значимый :-)

Re: Две команды..

Date: 2007-01-17 10:42 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
А вот TeXLive в 2006 году, наоборот, перешла с perforce на subversion. И это при том, что Perforce, Inc. бесплатно предоставила свою систему для TeXLive.

Re: Две команды..

Date: 2007-01-17 10:56 pm (UTC)
From: [identity profile] vgramagin.livejournal.com
Вот такие они странные :-)

Re: Две команды..

Date: 2007-01-18 12:59 am (UTC)
From: [identity profile] ninazino.livejournal.com
Да, на мой взгляд тоже. Работала я и c ClearCase, и с CVS, но должна признать, что Perforce -- лучше.
И, кстати, мердж там очень даже неплохой, я им пользуюсь чуть ли не через день.

Re: Две команды..

Date: 2007-01-18 01:40 am (UTC)
From: [identity profile] spamsink.livejournal.com
Perforce умеет перемещения строк отслеживать, как ClearCase умел? Как я его за это любил! Чуть не весь остальной ужас был готов простить.

Re: Две команды..

Date: 2007-01-18 01:48 am (UTC)
From: [identity profile] ninazino.livejournal.com
Да. Я перфорсовский дифф использую и для всех остальных дифф-нужд. Вообще, перфорс, на мой взгляд, делает все то же, что и ClearCase, но а) проще, без лишней навороченности, и б) гораздо дешевле.

Re: Две команды..

Date: 2007-01-17 10:14 pm (UTC)
From: [identity profile] ex-increp708.livejournal.com
Крютые кулхацкеры (извините) говорят "флаги". Это считается более кульно, чем "ключи".

:)

Date: 2007-01-17 08:46 pm (UTC)
From: [identity profile] vadim-i-z.livejournal.com
Последняя фраза к очень многим журналам подходит (и к моему тоже).

Date: 2007-01-17 09:45 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Это верно

Date: 2007-01-18 09:46 am (UTC)
From: [identity profile] e2pii1.livejournal.com
Не знают американские разработчики CVS ? Или просто такие попались ?
Везде где я работал был CVS.

Date: 2007-01-18 04:33 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Значительная часть американских разработчиков имеет, увы, слабое представление о том, зачем нужна вообще version control system. Одна из распространённых копроративных моделей разработки софта тут - это нанять как можно больше как можно более дешёвых кодеров (обычно иммигрантов первого поколения из Китая, Индии, Пакистана и т.п.) и дать каждому подробные инструкции. Типа "такого-то числа после удачного unit test делается cvs commit. Потому что Так Надо".

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

Лет пять назад я читал похожие лекции. После одной из них ко мне подошёл слушатель и сказал: "Знаете, я учился программировать в университете. Но меня четыре года обучали ремеслу: говорили, ЧТО надо делать. Вы первый начали с того, ПОЧЕМУ надо делать именно так". Не знаю, насколько он был искренен, но вот такое и вот такое - увы, реальность.

Date: 2007-01-19 06:47 am (UTC)
From: [identity profile] e2pii1.livejournal.com
Одна из распространённых копроративных моделей разработки софта тут - это нанять как можно больше как можно более дешёвых кодеров (обычно иммигрантов первого поколения из Китая, Индии, Пакистана и т.п.) и дать каждому подробные инструкции.

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

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

Date: 2007-01-19 06:08 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
О психологии начальства мне рассуждать сложно; ничего, кроме Галича ("но начальник умным не может быть, потому что не может быть") в голову не приходит.

На самом деле я слышал вполне серьёзное обоснование такого подхода на лекциях по организации разработки. Там объяснялось, что хотя хороший программист на порядки продуктивнее средних, с ним связана проблема: если он уйдёт, всё посыплется. Поэтому лучше нанимать не одного суперклассного, а кучу посредственных, и так организовать процесс, чтобы они были взаимозаменяемы. Винтики и гаечки. На мой взгляд, тут есть логическая ошибка: грамотность почему-то противопоставляется организованности. Может, правильнее нанимать грамотных и организовывать процесс с ними? Но я по политическим соображениям этого говорить лектору не стал. Лектор ещё приводил стандартное сравнение с промышленной революцией: дескать, всё стало лучше, когда на место старых мастеров, создававших шедевры, пришло массовое производство, а затем конвейер. Это на мой взгляд тоже странно: интеллектуальный труд тем и отличается от производства материальных товаров, что одна высококлассная карета не заменит тысячу плохих, а вот одна правильно написанная программа заменит тысячу плохих, созданных конвейерным способом.

Вообще это касается не только труда программиста, но и всякого интеллектуального труда. Тут есть две концепции, которые я (сугубо условно, и без желания обидеть массу пользователей компьютеров) называю подходом Unixа и подходом Windows.

В первом случае предполагается, что человек очень грамотен и потратил некоторое время на то, чтобы в совершенстве овладеть инструментарием (все эти awkи, sedы и grepы). Он занимается в основном нетривиальным, творческим трудом. А если ему нужно сделать много рутинных, повторяющихся вещей - он быстро и эффективно их автоматизирует с помощью этого инструментария - вроде упомянутого Вами кодогенератора. В общем, человек не должен работать - работать должна машина. А человек должен думать. Ещё раз подчеркну, что речь идёт не только о программистах; классики Unixа предназначали систему для всякого интеллектуального труда: и физик, и бухгалтер должны были сами писать однострочники на sedе с awkом - точно так же, как современный человек сам может написать и прочесть записку жене или мужу, и не прибегает к услугам писца.

В подходе Windows предполагается обратное: что человек туп, умственно ленив и в принципе не может ничему научиться. Его инструменты должны быть "просты в обучении". Предполагается, что его работа по большей части будет состоять в тупом Copy & Paste, а творческий элемент в ней минимизирован. Вопрос об автоматизации вообще не стоит: пользователю этого класса легче часа три подряд щелкать мышкой по одной и той же последовательности кнопок, чем один раз написать скрипт (на всякий случай скриптовые инструменты от него тщательно прячут).

Если Вас не смущает несколько марксистская терминология, то в первом подходе компьютер - инструмент человека, а во втором человек - придаток к компьютеру.

А вообще на эти темы лучше разговаривать с [livejournal.com profile] vitus_wagner: он довольно ясно об этом пишет.

Date: 2007-01-19 08:37 pm (UTC)
From: [identity profile] e2pii1.livejournal.com
Правильно вы все говорите.
Только вместо awk лучше gawk (GNU awk), у него возможностей больше, причем весьма полезных.
Мне в windows приходится работать, но я и в ней рутинные операции автоматизирую, восновном хватает удобного текстового редактора, gawk и MS DOS batch files.

Date: 2007-01-19 08:42 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
ls -ls `which awk`
0 lrwxrwxrwx 1 root root 21 2005-08-07 15:18 /usr/bin/awk -> /etc/alternatives/awk

ls -ls /etc/alternatives/awk
0 lrwxrwxrwx 1 root root 13 2005-08-07 14:48 /etc/alternatives/awk -> /usr/bin/gawk

Date: 2007-01-20 03:35 pm (UTC)
From: [identity profile] ny-quant.livejournal.com
Последний раз когда я встретил программиста, который не знал зачем нужна version control system был 9 лет назад и этим человеком, увы, был я сам. (Тогда был еще программистом.) Хотя, мне не приходилось работать на COBOL'е ;-)

Date: 2007-01-20 07:56 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Значит, Вам везло больше, чем мне.

А мне приходилось сталкиваться с ситуацией, когда программисты занимались дизассемблированием СОБСТВЕННОГО кода. Заказчик попросил внести изменения, и выяснилось, что в VC хранится древняя версия исходников, а свежую никто не почесался внести. Те, кто делали последнюю версию, давно уволились, и их директории стерли (об архивиривании со штампом "Хранить Вечно" системщики тоже не догадывались). Вот и восстанавливали код при помощи бинарника, лома и такой-то матери.

Date: 2007-01-21 12:06 am (UTC)
From: [identity profile] ny-quant.livejournal.com
Много было кровавых историй, но конкретно такой не было.

Date: 2007-01-27 05:30 am (UTC)
From: [identity profile] yurilax.livejournal.com
А у нас - в квартире газ ClearCase. Сначала все долго плевались, но теперь, освоившись, без findmerge жить не могут.

К чему это я?.. Да так, просто очень хочется поговорить о чём-то родном и знакомом с кем-то для кого это тоже родное и знакомое. :)

Profile

scholar_vit: (Default)
scholar_vit

January 2019

S M T W T F S
  12345
678 9101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 21st, 2025 08:55 pm
Powered by Dreamwidth Studios