LINUX.ORG.RU

Ответ на: комментарий от tailgunner

Нет «самой лучшей» книги, но хороших книг довольно много.

лорчую это мнение, например

jtootf ★★★★★
()

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

Laz ★★★★★
()
Ответ на: комментарий от Laz

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

tia
()

Code Complete, 2ed - есть на русском, кажется называется «Совершенный код» - очень хорошая книжка именно как раз про то, как разрабатывать «промышленный» код...

How to design Programs - http://htdp.org - очень хороший курс на базе mzscheme про дизайн программ

ott ★★★★★
()

мб «Практика программирования» Б.Керниган и Р.Пайк?

правда там про управление большим кодом вроде ничего нет

korvin_ ★★★★★
()

карентли чту «Совершенный код» Макконелла. доволен.

VladimirMalyk ★★★★★
()

Pragmatic Programmer, например.

Sphinx ★★☆☆
()
Ответ на: комментарий от tia

> Я не говорил что все «Code Monkeys» являются программистами.

Я тоже этого не говорил.

tailgunner ★★★★★
()

Ну щас тебя крутые дятьки научат код писать)) Хех)) Открою секрет - нету «хорошего» кода в большом смысле этого слова. Есть маленькие удачные реализации очень хорошо изученных задач. А в общем хлам это все.

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

dizza ★★★★★
()
Ответ на: комментарий от dizza

McConnell — весело и вкусно?

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

Да и кругозор у тебя полностью соответствует амплуа (это про «маленькие» реализации). Хочешь быть чайником — будешь.

anonymous
()

А теперь по теме.

Вопрос слишком общий. Знания свои ты не обозначил, будем считать, что ты студент без оных. Поэтому переформулирую твой вопрос: «Как стать программистом, а не кодирующей обезьяной?»

Про паттерны ЗАБУДЬ. Пока. Сейчас для тебя паттерны — это антипаттерн. :) Когда ты до них дорастёшь, такие вопросы уже задавать перестанешь. Раз спрашиваешь, чего это — не трогай. А то голова уже болит от юниоров, клепающих эти паттерны к месту и (чаще) не к месту. Это приходит вместе с чувством меры, вместе с практикой.

Далее: McConnell — неумный зануда, мешающий разные вещи в один котёл, слушать его не следует. Этот перец как раз из таких, которые делать уже не могут, принимаются учить. Хотя кому что. Если не чувствуешь, что бякой кормят, то вперёд, будешь бякой сам.

По теме поддерживаю SICP, HTDP, Pragmatic Programmer. Хватит для начала. Далее уже книги по алгоритмам и по языкам программирования, которые будешь применять. По алгоритмам Кнута неплохо бы осилить хоть 1-й том, хоть в режиме «могу понять, о чём это всё». Сейджвика (Robert Sedgewick) почитай, он полегче. По языку, который будешь в ближайшее время в основном использовать книг приличных. Не «выучу за 21 день», а самые глубокие основы, потом уже детали и практику применения.

Языки ты не указал, могу подкинуть идею: выбирать на двух уровнях. Во-первых из тех, что используются в отрасли: C, C++, Java, C#. Первый знать необходимо, второй полезно (и как мощную гимнастику, как дополнительную базу), на последней паре легче будет найти работу, в том числе за рубежом. К тому же после C++ последняя пара это вообще отдых.

И во-вторых действительно высокоуровневые языки, которые обязательно изучать параллельно, чтобы мозги не приросли к одной парадигме. Лисп, конечно — уже боевой CL, а не урезанную scheme. Это и гимнастика для ума и мощный инструмент в одном флаконе. Книги: Practical Common Lisp Successful Lisp On Lisp Common Lisp the Language

И т.п. по гуглам, ссылкам (lambda-the-ultimate.org хотя бы, там ещё ворох ссылок найдёшь).

Читай, сколько сможешь, систематизируй и практикуй. Кодогенерация [на лиспе] — вещь. Изучи её. (c) За нею будущее. Не сможешь — так и будешь лапками _все_ свои программы набирать. В отличие от. :)

anonymous
()
Ответ на: А теперь по теме. от anonymous

Еще почитай Concepts, Techniques, and Models of Computer Programming. В ней хорошо про конкурентное программирование написано. В качестве практики джава и лисп Clojure - самое то.

zahardzhan
()
Ответ на: McConnell — весело и вкусно? от anonymous

Ага а вот и «умный» дядко пожаловал. Да и еще грамма наци))) Тро-ло-ло.

ЗЫ. Показал бы к свои великие прожекты, мож и я жалкий кодеришко чему-нибудь научился. А то эти все sicp, cl, etc проходили. Интересно все это, а толку нет.

dizza ★★★★★
()
Ответ на: комментарий от dizza

> А то эти все sicp, cl, etc проходили. Интересно все это, а толку нет.

как говорится, Лисп — великий усилитель мысли, у кого мыслей нет, тому и усилять нечего...

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

Как на словах, так все гении. А вот как просишь показать их свой полезнейший безбажный красивый код, да еще и написанный в сроки, так все, герои закончились.

dizza ★★★★★
()
Ответ на: комментарий от dizza

> Как на словах, так все гении. А вот как просишь показать их свой полезнейший безбажный красивый код, да еще и написанный в сроки, так все, герои закончились.

сколько ты готов заплатить за такое удовольствие?

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

сколько ты готов заплатить за такое удовольствие

Омг. Лор уже не тотрт. Одни трепачи. Особенно луговский сильно испортил местную публику.

dizza ★★★★★
()
Ответ на: комментарий от korvin_

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

dizza ★★★★★
()
Ответ на: комментарий от dizza

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

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

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

> замечательные выводы ты делаешь по аватаркам. на кофейной гуще не гадаешь?

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

картинку такую поставил, потому что понравилась

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

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

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

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

Ну никто же не требует от тебя демонстраций именно в хаскелле. Хаскель был предложен как один из вариантов.

LamerOk ★★★★★
()
Ответ на: комментарий от dizza

Редиске

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

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

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

Чего ты там ещё хотел? Конфигу для WM? На хаскеле?! А какое это отношение имеет к качеству программирования в целом, к построению профессиональных знаний и навыков? Что за детский лепет? Ты делаешь мне смешно.

И Бруксом с «Мифическим человеко-месяцем» не надо прикрываться. Простачок, ага. Брукс ясно дал понять, что он имеет в виду: есть сложность наносная, вторичная, а есть системная, первичная. Вторичная устраняется поставлением на поток рутинных операций — всякие библиотеки, удобные инструменты и.т.д. Что и освобождает голову для мышления на уровне системы. Этими проблемами и нужно заниматься. Вот пока AI не изобрели полноценный, никто за тебя думать думы не будет, и, соответственно, с системной сложностью придётся справляться самому. Программирование и заключается в управлении сложностью суммарной системы таким образом, чтобы она во-первых решала задачу, во-вторых была способна адаптироваться к изменениям в условиях этой задачи.

И если вместо размышлений о системной сложности ты занимаешься ползанием по проекту и делаешь, как там, этот, hard-coding, как тот перец по ссылке советует, сам себе будешь злобный буратино, ибо именно этим и будешь заниматься значительную часть времени при любом мало-мальски значительном изменении спецификации. Да, один раз написать очень просто. Выковыривать потом тяжко, когда изменения затрагивают не одну, не две, а N точек. DRY principle нарушен — всё, привет. Между тем если бы ты сходил по ссылкам вокруг той статьи, так вот здесь (http://www.ebizq.net/blogs/decision_management/2007/04/dont_softcode_use_busi...) дан вполне внятный ответ на тему «что делать с такой бизнес-логикой»: «Don't hard-code it, don't soft-code it, don't code business rules at all!». Всё верно сказал.

Казалось бы, при чём тут LISP, и вообще языки высокого уровня? А при том, что обращение к подобным инструментам тренирует мозг не прирастать ко вторичным зависимостям. В пределе — вообще не повторять себя нигде.

А то как там в статье «Programming Sucks!» было: «The true rockstars can deliver software before deadlines, under budget, and that does exactly what the business needs. And those are the type we should all strive to be.» Прежде, чем вешать это на стенку, надо бы обратить внимание, что тут ни слова о поддержке этого кода. Об управлении сложностью не только сейчас, но и в будующем. Всё нормально? Прокатит такой подход, да?

Впрочем, ладно, твоя точка зрения тоже имеет право на существование. Да, среди кодеров, то есть людей, которым спецификации для работы будут спускать сверху. Такая временная замена, EI вместо AI, на несложных задачах. Потом вообще всех кодеров роботами заменят. +[x] Кроме шуток: расслоение программистов уже наметилось и будет усиливаться, за бугром это уже весьма заметно. Те, кто усвоят языки высокого уровня и прочие премудрости, будут уровнем повыше тех, кто предпочитает «надёжное» кодирование по рабоче-крестьянски, без закидонов.

Так что выбирай, но осторожно. Но выбирай.

P.S. Слава роботам!

anonymous
()
Ответ на: Редиске от anonymous

>Казалось бы, при чём тут LISP, и вообще языки высокого уровня?

Те, кто усвоят языки высокого уровня и прочие премудрости


Бла-бла-бла.

anonymous
()
Ответ на: Редиске от anonymous

> Да вообще нет смысла что-то доказывать на ЛОРе — всё равно зафлеймите всё насмерть. (Тут же, блин, не научный семинар, тут сборище специалистов по всему. Проверяю раз в месяц, ничего не меняется).

Было бы намного интереснее читать ЛОР, если бы ты чаще появлялся здесь. :)

dave ★★★★★
()
Ответ на: Редиске от anonymous

изрядной контекстной привязкой к моей области и вообще нетривиальностью — я устану объяснять.

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

Да, среди кодеров, то есть людей, которым спецификации для работы будут спускать сверху. Такая

Что еще раз подтверждает твою оторванность от жизни. Спецификации бывают в тривиальных случаях. На практике есть какие-то не внятные требования заказчика.

dizza ★★★★★
()
Ответ на: комментарий от dizza

На практике между кодером и заказчиком с десяток других людей. Если твоя практика ограничивается мелким кодированием под 1С для конторы «Рога и Копыта», то твоё мнение ничего не стоит. Не мелкой сявке МакКоннела критиковать.

anonymous
()
Ответ на: комментарий от anonymous

Не-не-не

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

Вообще такой кратенький вброс мнения от анонимного пользователя сам по себе лишён смысла, анонимус должен говорить достаточно ёмко и аргументированно, поскольку не имеет тянущейся репутации. Как, пока со мной, не оторвался? Ну так по теме есть, что сказать? Ну так говори, разворачивай. :-) Или проваливай.

anonymous
()
Ответ на: комментарий от LamerOk

> Ну никто же не требует от тебя демонстраций именно в хаскелле. Хаскель был предложен как один из вариантов.

Спешиал фо ю: по скольку у тебя на авке лого хаскеля, можешь запостить сюда пример конфига от xmonad.

не думаю, что кто-то когда либо писал конфиг хмонада не на хаскелле =)

korvin_ ★★★★★
()

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

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

Ну щас тебя крутые дятьки научат код писать

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

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

Да, я студент на 3 курсе, вы угадали. Обучение программированию было немного нестандартым, и без единого преподавателя. Нестандартным было в том смысле, что очень ранним, с 6 класса. До сих пор радуюсь что статус вундеркинда не заставил обленится. Я узнал что такое виртуальная функция, до того как узнал теорему Пифагора. Естественно в 8 классе экспериментировал с клиент-серверными приложениями, в 9 с OpenGL, в 10 - нейросети, а в 11 - участие на мировом конкурсе робототехники в составе одной из команд США. Тогда же и сделал биометрическую распознавалку подписи человека на нейросетях, победил на всеукраинском конкурсе и попал в универ. На первый курс насчитывал в своем распоряжении около 10 ЯП и основный платформы.

Но... Так как я постоянно учился (24/7), то я нигде не работал. Это бы ухудшило резюме для меня. В итоге я писал сложные программы, но не писал больших программ. Я не умею писать больших программ. Увидел явный жирный пробел в своих знаниях.

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

Про паттерны ЗАБУДЬ. Пока. Сейчас для тебя паттерны — это антипаттерн. :) Когда ты до них дорастёшь, такие вопросы уже задавать перестанешь

Я очень сильно не страдаю синдромом Not invented here. Думаю что о этом нужно прочитать, пропустить через себя, профильтровать и жить долго и счастливо.

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

За совет спасибо. Я как раз этим и занимаюсь. Недавно заметил, что раньше все легко давалось, а ФП идет туго. Мозги таки начали приростать к одной парадигме. С лечебными целями сейчас вплотную занимаюсь Scala.

Всем спасибо еще раз за советы, пошел читать.

vertexua ★★★★★
() автор топика
Ответ на: Не-не-не от anonymous

> Ты это про сявку сейчас кому сказал — мне или dizza?

Не знаю кто ты, но на МакКоннела раскатывался именно dizza.

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

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

anonymous
()
Ответ на: комментарий от vertexua

> Я легко программирую то что мне надо, код является вполне удачным и понятым. Он вполне хорошо устроен. Это все получается естественно, на основе опыта.

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

anonymous
()
Ответ на: комментарий от anonymous

Не идущие - достаточно брать в руки и смотреть на собственные студентческие поделки. Чужие - тоже хорошо.

LamerOk ★★★★★
()
Ответ на: комментарий от tia

лучше изучи схожие проекты других авторов.


А кто тебе даст? В открытом доступе дай бг 10% кода, остальное закрытое, академическое, исследовательское или вообще проприетарное

Karapuz ★★★★★
()

Странно, что Спольски еще никто не посоветовал, в отличие от всяких там МакКоннелов, он действительно толково пишет.

Reset ★★★★★
()
Ответ на: комментарий от LamerOk

Он пишет именно про программирование. А про то как правильно писать именно код может сильно зависеть от языка программирования. Про то как правильно писать С++ код была книжка у Саттера с Александерску.

Reset ★★★★★
()
Ответ на: комментарий от Reset

> Он пишет именно про программирование.

В эссе, посвященным отбору кандидатов, историям из работы в мелкософт и прочему ЖЖ?

LamerOk ★★★★★
()
Ответ на: комментарий от Reset

> Он пишет именно про программирование.

Графомания это. «О программировании» хорошо написал Бентли в «Жемчужинах программирования». Но это не о «больших» программах, а о том, как избежать их написания :) Еще Йодана можно почитать («Марш смерти», который у нас почему-то переведен как «Путь камикадхе»), ДеМарко и Листера («Peopleware»), но это книги о нетехнической стороне больших программ.

tailgunner ★★★★★
()
Ответ на: комментарий от vertexua

Ну щас тебя крутые дятьки научат код писать

Нет, спасибо, я умею)

Это был выпад в сторону дядек, декскать щас все начнут уму разуму учить=)

В итоге я писал сложные программы, но не писал больших программ.

Большие программы == (говнокод, говнопроцесс, говнозадачи). В большинстве случаев. Оно тебе сильно нужно?

dizza ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.