Вход на сайт
базовая литература по программированию
NEW 30.08.06 16:32
Последний раз изменено 04.09.06 13:39 (Tomasson)
меня на днях спросили, могу ли я подсказать какие-то курсы по программированию.
Ответил, что я - самоучка и никакие курсы не посещал.
Посоветовал научиться программированию по книгам.
И вот возник вопрос: реально ли составить некий базовый список литературы для людей, которые хотят научиться программировать? Я исхожу из того, человеку программирование нужно как хобби и/или для каких-то своих проэктов (например, свой сайт или какие-то небольшие программки), а не как основная профессия (посмотрите на Murr'a и быстро передумайте;-))
У кого какие будут думки на этот счет?
Хотелось бы иметь именно базовый список, дабы не дать человеку утонуть в океане книг :-)
C++
--- Andrew Koenig *Intensivkurs C++. Schneller Einstieg über die Standardbibliothek* (http://www.amazon.de/Intensivkurs-Schneller-Einstieg-%fcber-Standardbibliothek/d...)
--- Heiko Kalista *C++ für Spieleprogrammierer* (http://www.amazon.de/C%2b%2b-f%fcr-Spieleprogrammierer-Heiko-Kalista/dp/34464033...)
Java
--- Christian Ullenboom *Java ist auch eine Insel* (http://www.galileocomputing.de/openbook/javainsel5/)
--- Guido Krüger *Handbuch der Java-Programmierung* (http://www.javabuch.de/)
C#
PHP
--- George Schlossnagle *Professionelle PHP 5-Programmierung* (http://www.amazon.de/Professionelle-5-Programmierung-Entwicklerleitfaden-gro%dfe...)
--- Котеров, Костарев *PHP 5. В подлиннике* (http://www.bhv.ru/books/book.php?id=6643)
--- Котеров *Самоучитель PHP 4* (http://www.zipsites.ru/books/php4/)
HTML
Javascript
XML
XSLT
--- Michael Fitzgerald *Learning XSLT* (http://www.amazon.com/Learning-XSLT-Michael-Fitzgerald/dp/0596003277)
--- Sal Mangano *XSLT Cookbook* (http://www.amazon.com/XSLT-Cookbook-Second-Cookbooks-OReilly/dp/0596009747)
--- Michael Kay *XSLT 2.0 Programmer's Reference* (http://www.amazon.com/XSLT-2-0-Programmers-Reference-Programmer/dp/0764569090)
Ответил, что я - самоучка и никакие курсы не посещал.
Посоветовал научиться программированию по книгам.
И вот возник вопрос: реально ли составить некий базовый список литературы для людей, которые хотят научиться программировать? Я исхожу из того, человеку программирование нужно как хобби и/или для каких-то своих проэктов (например, свой сайт или какие-то небольшие программки), а не как основная профессия (посмотрите на Murr'a и быстро передумайте;-))
У кого какие будут думки на этот счет?
Хотелось бы иметь именно базовый список, дабы не дать человеку утонуть в океане книг :-)
C++
--- Andrew Koenig *Intensivkurs C++. Schneller Einstieg über die Standardbibliothek* (http://www.amazon.de/Intensivkurs-Schneller-Einstieg-%fcber-Standardbibliothek/d...)
--- Heiko Kalista *C++ für Spieleprogrammierer* (http://www.amazon.de/C%2b%2b-f%fcr-Spieleprogrammierer-Heiko-Kalista/dp/34464033...)
Java
--- Christian Ullenboom *Java ist auch eine Insel* (http://www.galileocomputing.de/openbook/javainsel5/)
--- Guido Krüger *Handbuch der Java-Programmierung* (http://www.javabuch.de/)
C#
PHP
--- George Schlossnagle *Professionelle PHP 5-Programmierung* (http://www.amazon.de/Professionelle-5-Programmierung-Entwicklerleitfaden-gro%dfe...)
--- Котеров, Костарев *PHP 5. В подлиннике* (http://www.bhv.ru/books/book.php?id=6643)
--- Котеров *Самоучитель PHP 4* (http://www.zipsites.ru/books/php4/)
HTML
Javascript
XML
XSLT
--- Michael Fitzgerald *Learning XSLT* (http://www.amazon.com/Learning-XSLT-Michael-Fitzgerald/dp/0596003277)
--- Sal Mangano *XSLT Cookbook* (http://www.amazon.com/XSLT-Cookbook-Second-Cookbooks-OReilly/dp/0596009747)
--- Michael Kay *XSLT 2.0 Programmer's Reference* (http://www.amazon.com/XSLT-2-0-Programmers-Reference-Programmer/dp/0764569090)
NEW 30.08.06 18:53
в ответ scorpi_ 30.08.06 17:11
думаешь, имеет смысл новичку сразу С++ подсовывать?
Я б не стал.
Для веба PHP хватит с ушами, а для программок каких-то - Java, C#.
...вот...
предлагаю на этих языках сконцентрироваться :-)
Интересует еще литература, которая поможет новичку понять ООП. Меня несколько раз спрашивали, но я так ничего и не вспомнил подходящего.
Особенно ПХПэшники интересуются этим, которые хотят ООП в своих проектах использовать. Замучали уже :-)
Я б не стал.
Для веба PHP хватит с ушами, а для программок каких-то - Java, C#.
...вот...
предлагаю на этих языках сконцентрироваться :-)
Интересует еще литература, которая поможет новичку понять ООП. Меня несколько раз спрашивали, но я так ничего и не вспомнил подходящего.
Особенно ПХПэшники интересуются этим, которые хотят ООП в своих проектах использовать. Замучали уже :-)
NEW 30.08.06 20:12
в ответ Tomasson 30.08.06 16:32
(посмотрите на Murr'a и быстро передумайте;-))
------
И что же ты имел в виду? Муррка с виду очень даже ничего... Белая, пушистенькая...
А что царапается - так на то и Котяшество, что бы царапки осталять...
Что до списка... Тут в первую очередь надо определиться с областью применения.
В общем случае надо начинать с чето-то, что даст четкое понимание различия между
данными, их обработкой и при этом будет ООП-базирующееся. Дать это на ПХП... хммм...
думаю, что практически невозможно - слишком много сторонних моментов для новичка,
особенно, при самостоятельном изучении.
Что до курсов - вчера мне тоже запостили этот вопрос. Порекомендовал... начальные
курсы по Ораклу - там как раз на год по времени и дают неплохо. Правда стоит это
удовольствие дороговато - 10.000...
А если без шуток, то нужно достаточно профессиональное введение в программирование.
При том тренаже, который я проводил, это занимало порядка трех месяцев и из группы в
14-15 человек в нормальном темпе информацию могли освоить 5-6 человек... при том, что
полные дубы отсеивались до начала тренажа.
Так что если у кого есть желание самостоятельно учиться по книжкам и достичь хоть
сколь-нибудь существенного уровня - готовьтесь к тому, что вы будете каждый божий
день читать какую-то новую литературу и пробовать что-то делать в течениии лет этак пяти...
По прошествии этого времени - сможете что-то делать... но чтобы продолжать мочь это
делать, будете полностью переучиваться, в том же или чуть большем объеме, что освоите
за первые пять лет, - каждые три года...
Так что - думайте, не зря
Tomasson разделил на профи и любителей...
------
И что же ты имел в виду? Муррка с виду очень даже ничего... Белая, пушистенькая...
А что царапается - так на то и Котяшество, что бы царапки осталять...

Что до списка... Тут в первую очередь надо определиться с областью применения.
В общем случае надо начинать с чето-то, что даст четкое понимание различия между
данными, их обработкой и при этом будет ООП-базирующееся. Дать это на ПХП... хммм...
думаю, что практически невозможно - слишком много сторонних моментов для новичка,
особенно, при самостоятельном изучении.
Что до курсов - вчера мне тоже запостили этот вопрос. Порекомендовал... начальные
курсы по Ораклу - там как раз на год по времени и дают неплохо. Правда стоит это
удовольствие дороговато - 10.000...
А если без шуток, то нужно достаточно профессиональное введение в программирование.
При том тренаже, который я проводил, это занимало порядка трех месяцев и из группы в
14-15 человек в нормальном темпе информацию могли освоить 5-6 человек... при том, что
полные дубы отсеивались до начала тренажа.
Так что если у кого есть желание самостоятельно учиться по книжкам и достичь хоть
сколь-нибудь существенного уровня - готовьтесь к тому, что вы будете каждый божий
день читать какую-то новую литературу и пробовать что-то делать в течениии лет этак пяти...
По прошествии этого времени - сможете что-то делать... но чтобы продолжать мочь это
делать, будете полностью переучиваться, в том же или чуть большем объеме, что освоите
за первые пять лет, - каждые три года...
Так что - думайте, не зря

30.08.06 23:16
Объясни мне монаду Cont Хаскеля.
http://www.nomaware.com/monads/html/contmonad.html
http://www.nomaware.com/monads/html/contmonad.html
Dropbox - средство синхронизации и бэкапа файлов.
NEW 31.08.06 00:10
Не, про новичков я не влезаю, я затрудняюсь вообще что-либо там сказать, т.к. начинаю думать, что потерял очень много времени начиная с императивщины и теперь вынужден и математику изучать и менять образ мышления, но, посколько, я пока не продвинулся особо в функциональщине, то не в состоянии оспорить ваш диалог и высказать мегамысль, что новичков надо сначала математикой пичкать. Но утверждение Симпла о том, что С++ это самое сложное и после него раз плюнуть изучить что-то другое, я, думаю, смогу оспорить, фактически я сам так думал, пока моя экс супруга начав учится в местном уни не попросила меня помочь ей разобраться с SML. В общем, я сел в лужу тогда. С++ помог однажды только легко осилить яву и иже с ней,
типа всякого мусора наподобие PHP, но не больше. Самые простые вещи из мира функциональщины вызывали у меня полнейший тормозизм.
function create(k) {
var arr = [];
for (var j=1; j<k; j++) {
arr[j] = function(n) {
return function() { alert(n*n) }
}(j);
}
return arr;
}
Простое двойное замыкание (JavaScript), но после С++ я никак не мог понять его...
Dropbox - средство синхронизации и бэкапа файлов.
NEW 31.08.06 00:33
в ответ voxel3d 31.08.06 00:10
То что фукциональщина сложнее для понимания это ясно. Мне собственно непонятно одно - зачем тебе продвигаться в функциональщине? Я честно говоря с самой первой секунды и по сей день думаю, что это чистейшей воды извращение...
В профессиональном смысле это вроде тоже довольно таки бесполезная вещь. Чистый интерес? Желание поломать голову?
ЗЫ Классная цитата: "Abuse of the Continuation monad can produce code that is impossible to understand and maintain." Только abuse даже излишне, достаточно просто use...

ЗЫ Классная цитата: "Abuse of the Continuation monad can produce code that is impossible to understand and maintain." Только abuse даже излишне, достаточно просто use...
NEW 31.08.06 01:07
в ответ scorpi_ 31.08.06 00:33
Началось вс╦ с STL. Я сразу проникся ей, как только она мне на глаза попалась и стал использовать е╦. И понял, что такую красивую систему я не смог бы придумать. Я имею в виду не то чтобы я не смог библиотеку контейнеров или алгоритмов написать, вовсе нет, мог и писал, но, вот, чтобы гармонично библиотека контейнеров с библиотекой алгоритмов ужилась, такого, неа. Я не смог бы прослойку в виде функциональных объектов, адаптеров, отрицателей, предикатов и прочего придумать.
Я бы не стал говорить, что в профессинальном смысле, это бесполезная вещь. Ты пользуешься и STL и Boost, там хренова туча взятого из функциональщины. Сигналы со слотами, функционалы, лямбды и прочее вс╦ оттуда и вс╦ находит применение сокращая объ╦м работы.
Я верю в то, что изучение функциональщины улучшит мо╦ программирование, вот и вс╦. Насколько подходяща функциональная парадигма, чтобы полностью заменить собой императивное программирование, я пока не знаю, но собираюсь это выяснить. Пока осознал, что функциональщина позволяет иметь полноценное ООП в тех языках, где его как такового и нет, например, в том же JavaScript. Несмотря на наличие наследования прототипов, инкапсуляции как таковой нет, но с помощью тех же замыканий, у "классов" легко реализуются приватные поля.
> Abuse of the Continuation monad can produce code that is impossible to understand and maintain.
А теперь замени "Continuation monad" на "C++ templates" и утверждение не потеряет истинность.
Я бы не стал говорить, что в профессинальном смысле, это бесполезная вещь. Ты пользуешься и STL и Boost, там хренова туча взятого из функциональщины. Сигналы со слотами, функционалы, лямбды и прочее вс╦ оттуда и вс╦ находит применение сокращая объ╦м работы.
Я верю в то, что изучение функциональщины улучшит мо╦ программирование, вот и вс╦. Насколько подходяща функциональная парадигма, чтобы полностью заменить собой императивное программирование, я пока не знаю, но собираюсь это выяснить. Пока осознал, что функциональщина позволяет иметь полноценное ООП в тех языках, где его как такового и нет, например, в том же JavaScript. Несмотря на наличие наследования прототипов, инкапсуляции как таковой нет, но с помощью тех же замыканий, у "классов" легко реализуются приватные поля.
> Abuse of the Continuation monad can produce code that is impossible to understand and maintain.
А теперь замени "Continuation monad" на "C++ templates" и утверждение не потеряет истинность.

Dropbox - средство синхронизации и бэкапа файлов.
NEW 31.08.06 01:45
Для веба PHP хватит с ушами, а для программок каких-то - Java, C#.
...вот...
предлагаю на этих языках сконцентрироваться :-)
Для PHP я могу рекомендовать http://www.amazon.de/Professionelle-PHP-5-Programmierung-Entwicklerleitfaden-f%f..., но это уже для продвинутых. Для начального уровня мне кажется нет ничего лучше чем http://www.php.net/manual/de/.
По С# я не специалист. А по Java я честно говоря хороших книг не видел. Вообще.
...вот...
предлагаю на этих языках сконцентрироваться :-)
Для PHP я могу рекомендовать http://www.amazon.de/Professionelle-PHP-5-Programmierung-Entwicklerleitfaden-f%f..., но это уже для продвинутых. Для начального уровня мне кажется нет ничего лучше чем http://www.php.net/manual/de/.
По С# я не специалист. А по Java я честно говоря хороших книг не видел. Вообще.
NEW 31.08.06 01:53
в ответ scorpi_ 31.08.06 00:33
По-поводу извращений, это очень спорный вопрос.
Вот, скажи, что является бОльшим извращением, запись вида:

typedef void (*SIG_TYP)(int);
typedef void (*SIG_ARG_TYP)(int);
SIG_TYP signal(int, SIG_ARG_TYP);
или
signal: int * (int -> void) -> (int -> void)
По мне, так первое. Могу целую кучу синтаксического сахара привести и ответного ужаса.
Но дело не в ситаксисе самом, дело в логичности и стройности мышления, которое присуще математике и которое напрямую выражается в функциональщине.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 31.08.06 02:16
в ответ scorpi_ 31.08.06 01:36
> Мне всегда казалось, что шаблоны очень простая для понимания вещь..
Я думаю, с тобой не согласится очень много людей.
Мне любопытно кто-нибудь расскажет что это, зачем это и как работает, только не подсказывай :) :
Я думаю, с тобой не согласится очень много людей.
Мне любопытно кто-нибудь расскажет что это, зачем это и как работает, только не подсказывай :) :
template<bool> struct XXXXX;
template<> struct XXXXX<true> {};
На самом деле пример очень неудачный, оно на самом деле очень просто для понимания.
Dropbox - средство синхронизации и бэкапа файлов.
NEW 31.08.06 10:29
в ответ voxel3d 31.08.06 02:16
Пример действительно неудачный. Шаблоны вводятся в первую очередь для type-safe замены макросов и имплементации контейнеров. Отсюда и будем плясать:
template<class T> inline
const T& max( const T& left, const T& right )
{
return left < right ? right : left;
}
Я думаю это действительно несложно.
По поводу указателей на функции - да, в С их синтакс действительно очень неудобен и сложен, но твой противопример не более интуитивен.
ЗЫ Leider keine Zeit für weitere Diskussionen - уехал в Хаген.
NEW 31.08.06 11:12
в ответ voxel3d 30.08.06 23:16
scorpi_ уже, собственно, все сказал, мне добавить нечего. Функциональные языки тут не пришей кобыле хвост.
Я уже по-моему писал, что имел удовольствие заниматься функциональными языками (lisp и scheme), так что смог бы объяснить, если бы мне не было так лень. Признаю, естественно, что знание С++ мне в этом не поможет.
Я уже по-моему писал, что имел удовольствие заниматься функциональными языками (lisp и scheme), так что смог бы объяснить, если бы мне не было так лень. Признаю, естественно, что знание С++ мне в этом не поможет.