Почему программисты новичка, кажется, уклоняются от библиотек? [закрытый]

У нас есть единственный файл AssemblyInfoGlobal.cs на уровне решения, как другие ответы. Тогда мы имеем как часть нашего сценария сборки немного приложения, которое берет CCNetLabel, который CruiseControl.net определяет (и использование defaultLabeller, чтобы генерировать маркировки) и контроль глобальный файл, изменить номер версии и затем перепроверить глобальный файл в.

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

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

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

54
задан 3 revs, 3 users 100% 3 March 2010 в 10:44
поделиться

39 ответов

Многие программисты-новички все еще работают на очень низком уровне абстракции, изучая ремесло. Это то, через что должен пройти каждый. Чтобы «подняться по стеку», так сказать, требуется время.

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

107
ответ дан 7 November 2019 в 07:31
поделиться

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

Я помню, как программировал свой первый DAL, и избегал всех других бесплатных библиотек в Интернете, потому что я хотел, чтобы мой код работал с максимальной скоростью. Позже я обнаружил, что обычно проблема не в коде, а в базе данных.

1
ответ дан 7 November 2019 в 07:31
поделиться

Я думаю, профессора хотят, чтобы они придерживались основ. Когда я закончил бакалавриат, я знал C ++, Java и некоторые другие языки, но понятия не имел о библиотеках и фреймворках, используемых в компаниях. Это было похоже на то, знаете ли вы java .. да .. вы можете написать сервлет .. нет.

1
ответ дан 7 November 2019 в 07:31
поделиться

Некоторые люди, сталкиваясь с проблема, подумайте: «Я знаю, я воспользуюсь библиотека." Теперь у них два проблемы.

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

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

22
ответ дан 7 November 2019 в 07:31
поделиться

Почти всегда это потому, что их профессор сказал им, что они не могут.

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

18
ответ дан 7 November 2019 в 07:31
поделиться

Это кривая обучения.

13
ответ дан 7 November 2019 в 07:31
поделиться

Некоторые библиотеки с открытым исходным кодом содержат ошибки или не так эффективны, как другие.

1
ответ дан 7 November 2019 в 07:31
поделиться

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

Так что мне просто хотелось посмотреть, смогу ли я это сделать.

9
ответ дан 7 November 2019 в 07:31
поделиться

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

По крайней мере, для меня (попытки) делать что-то сам - это мой способ обучения.

Мое впечатление таково. многие начинающие программисты не сочли бы это своей работой, если бы они использовали чьи-то библиотеки.

8
ответ дан 7 November 2019 в 07:31
поделиться

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

Итак, столкнувшись с попыткой решить проблему X, фраза «использовать библиотеку» может звучать очень похоже на «Решите проблему Y, ТОГДА проблема x».

(Кроме того, их профессора сказали им не делать этого. Я сумел пройти весь путь, хотя мой бакалавр по C ++ не знал, что существует STL. Боже, ЭТО приготовило мою лапшу.)

34
ответ дан 7 November 2019 в 07:31
поделиться

Я не думаю, что это обязательно плохо. Использование библиотек - это здорово; это экономит время, усилия, ошибки и т. д. Однако в процессе вы узнаете очень мало, и для начинающих программистов обучение является целью. Чтобы ответить на вопрос, я думаю, что они склонны уклоняться от библиотек просто потому, что они не привыкли их использовать и, возможно, они не знают, что они существуют.

7
ответ дан 7 November 2019 в 07:31
поделиться

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

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

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

7
ответ дан 7 November 2019 в 07:31
поделиться

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

Поскольку изучение библиотеки менее увлекательно, чем кодирование такая же функциональность у себя.

6
ответ дан 7 November 2019 в 07:31
поделиться

Больше библиотек = меньше оплачиваемых часов.

5
ответ дан 7 November 2019 в 07:31
поделиться

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

3
ответ дан 7 November 2019 в 07:31
поделиться

По той же причине, что и более опытные разработчики -

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

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

3
ответ дан 7 November 2019 в 07:31
поделиться

Потому что это весело.

4
ответ дан 7 November 2019 в 07:31
поделиться

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

4
ответ дан 7 November 2019 в 07:31
поделиться

Когда вы пытаетесь научиться что-то делать, каждый раз, когда что-то делается «волшебным образом», вызывая AwesomeClass.doAwesomeStuff ( ), вы в конечном итоге отдаете часть контроля. Когда вы «новичок» и не знаете, что вы отдаете или почему это может беспокоить. Это было моим основным ударом по Rails, когда я впервые его изучал. Так много вещей просто «сработало», и я не знал, почему, не копаясь в большом количестве исходников Rails (на что у меня обычно не было времени).

По крайней мере, я так понимаю.

3
ответ дан 7 November 2019 в 07:31
поделиться

Я программист, а не психолог! :)

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

3
ответ дан 7 November 2019 в 07:31
поделиться

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

1
ответ дан 7 November 2019 в 07:31
поделиться

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

  1. Отчасти это как «начинающих программистов» - это отсутствие доступа к библиотекам. Если вы не знаете, что они существуют, как вы узнаете, как их использовать?
  2. Количество доступных опций. Скажем, мне действительно интересно узнать больше о MVC, но если мне придется выбирать между cakephp и smarty, zend и ... ну, вы можете быстро увидеть, как работают механизмы, чтобы найти способ достижения цели, не вкладывая время в эксперименты . Взгляните на Freshmeat или SourceForge, чтобы лучше понять обескураживающий выбор доступных библиотек.
  3. Сомнительная поддержка в сочетании с отрывочной / устаревшей документацией для библиотек. Хочу ли я использовать этот инструмент, который может больше не работать или от которого в будущем откажутся? Вполне вероятно, что проект будет развиваться, как и проект библиотеки. Продлится ли его полезность в течение всего срока существования моего проекта или мне придется заново проделывать эту работу?
1
ответ дан 7 November 2019 в 07:31
поделиться

Библиотеки часто связаны с накладными расходами на изучение некоторого API и его парадигмы. Это может стать сложным довольно быстро, и я легко мог понять, что новички предпочли бы что-то немного большее в их зоне комфорта. По моему опыту, я обнаружил, что большинство библиотек и фреймворков отлично справляются с абстрагированием некоторых утомительных рутинных операций, но когда мне нужно либо расширить эту функциональность, либо использовать ее не так, как задумано, это может оказаться немного. Я думаю, это одна из тех вещей, где «практика приводит к совершенству».

2
ответ дан 7 November 2019 в 07:31
поделиться

Вы можете загрузить CSS из локального каталога проекта

NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:htmlString baseURL:baseURL];

подробную информацию проверить этот сайт: http://iphoneincubator.com/blog/windows-views/uiwebview-revisited

-121--2316233-

В идеале объект начнет наблюдать интересные события сразу после его инициализации. Таким образом, все интересные события будут регистрироваться с помощью NotifityCenter в его коде инициализации. sendEvent: в основном является оберткой вокруг метода postNotification: .

@implementation A

- (id)init {
    if(self = [super init]) {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveEvent:) name:@"SomeEvent" object:nil];
    }
    return self;
}

- (void)sendEvent {
    [[NSNotificationCenter defaultCenter] postNotificationName:@"SomeOtherEvent" object:nil];
}

// Called whenever an event named "SomeEvent" is fired, from any object.
- (void)receiveEvent:(NSNotification *)notification {
    // handle event
}

@end

То же самое для класса B.

Изменить 1:

Возможно, проблема усложняется. NSNotifiveCenter выступает в качестве брокера, которому отправляются все события, и решает, кому их переслать. Это похоже на шаблон Observer , но объекты не наблюдают и не уведомляют друг друга напрямую, а скорее через центрального брокера - NSNotificalCenter в данном случае. При этом нет необходимости напрямую соединять два класса, которые могут взаимодействовать друг с другом с # include .

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

Таким образом, найдите все события, о которых должен знать объект, и зарегистрируйте их в этом методе init () и отмените их регистрацию в методе dealloc () .

Это базовое учебное пособие является полезным.

-121--4779957-

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

1
ответ дан 7 November 2019 в 07:31
поделиться

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

1
ответ дан 7 November 2019 в 07:31
поделиться

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

1
ответ дан 7 November 2019 в 07:31
поделиться

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

В интерпретируемой (или скомпилированной IRT), в основном , когда есть консоль, такого страха почти нет ; поскольку вы можете потребовать и посмотреть, не сработает ли он, вызовите метод и посмотрите, что он вернет.

Консоли - орудия храбрости!

1
ответ дан 7 November 2019 в 07:31
поделиться

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

2
ответ дан 7 November 2019 в 07:31
поделиться

Использование библиотек, вероятно, одна из худших вещей, которые обучающийся программист может сделать. Вместо того, чтобы учиться программировать, они учатся использовать определенные API, реализованные другими людьми. Я не говорю, что каждый программист должен понимать каждую вещь, которую он использует, но программисты, которые знают все тонкости компьютера (цифровая логика, сборка кодов операций и т. Д.), Обычно имеют преимущество перед людьми, которые начали с чем-то вроде Java Swing и просто собираем библиотеки.

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

10
ответ дан 7 November 2019 в 07:31
поделиться

Ответ новичка - «Я не уверен, как использовать библиотеки, или даже как получить к ним доступ или как это работает»

3
ответ дан 7 November 2019 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: