Можно ли научиться программированию самостоятельно,по книгам? (подскажите самый легкий язык которому можно научиться и полезную литер)

Модератор: Модераторы разделов

iZEN
Сообщения: 225

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение iZEN »

t.t, МК-61 — то ещё чудо. Воспитало поколение на культуре достаточного минимализма. (Моделирование полётов на Луне этожесть) :D

Учиться нужно начинать с понимания, что же хочется получить в итоге от машины и какие действия нужно предпринять ей для этого — уметь прослеживать цепочку от результата к исходным данным, учиться алгоритмически мыслить — Алгоритм. Это первый шаг.

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

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

Язык программирования для обучения может быть любой, но он должен быть обязательно:
• последовательным, без „побочных эффектов“;
• удобным для освоения, с понятным синтаксисом и простой семантикой;
• удобным для экспериментирования с данными пользователя;
• простым операционным окружением.

Си и тем более C++ для обучения не годятся из-за большого количества побочных эффектов и неявной семантики (недаром по ним написаны талмуды). Эти языки — высокоуровневая замена ассемблеру, а ассемблер на разных машинах разный, полно отпугивающих нюансов. В конце-концов, C++ — это просто свалка парадигм, распиханных Страуструппом в середине 80-х по принципу „лишь бы было своё и с классами“. :D

Pascal, пожалуй, будет в самый раз, можно легко подобрать среду для изучения. Школьный курс информатики построен на нём (вспомните Ершова).

Java — следующий этап, более сложный. Изучение ООП лучше начать именно на нём. Другой синтаксис — не беда, семантика вызовов методов почти та же самая, что в Pascal: просто добавляются новые сущности (ссылочные типы, без паскалевских „шляпок“ ^).

Ruby — можно попробовать.
Спасибо сказали:
Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение georgy_sh »

Вы очень красиво написали, и со всем я согласен. НО!
ИМХО, если учиться программировать на чистом С, то семантика у него не такая уж и неявная. Мне даже кажется, что С, как алгоритмический язык, по усваиваемости не хуже, чем Паскаль /*чистое ИМХО*/ Хотя нюансы все-таки есть и Паскаль немного превосходит С по "понятности".

А вот касательно других языков программирования, можно посмотреть на Python - тоже довольно-таки неплохой и понятный.
Спасибо сказали:
iAm
Сообщения: 220
ОС: Gentoo

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение iAm »

Подозреваю, что автор даже и не предполагал в какой ажиотаж выльется его безобидная тема.
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение v04bvs »

Возможно стоит посмотреть в сторону Scheme, как первого языка.
Спасибо сказали:
Аватара пользователя
ety
Сообщения: 358
ОС: Linux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение ety »

t.t писал(а):
22.10.2006 14:04
Я, к примеру, программированию изначально учился на МК-61 (в 10 лет); там не то что асм -- там фактически машкод, хотя и довольно упрощённый по сравнению с тем же 8086. И я весьма жалею о том, что позже меня стали учить бейсику и паскалю, чем заставили меня забыть свои "машкодовские" привычки и фактически почти отвадили от программирования; и о том, что книга Абеля не попалась мне года на два-три раньше, чем это случилось.

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

Си и тем более C++ для обучения не годятся из-за большого количества побочных эффектов и неявной семантики (недаром по ним написаны талмуды). Эти языки — высокоуровневая замена ассемблеру

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

а ассемблер на разных машинах разный, полно отпугивающих нюансов.

ассемблер разный лишь по маленьким нюансам, и load, strore, jmp вы найдете везде - поняв x86 или mips, вы без труда поймете на sparc или той-же МК-61.
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
Спасибо сказали:
Аватара пользователя
rolano
Сообщения: 845
Статус: еще один юзер FreeBSD
ОС: какая-то

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение rolano »

2 ety
Ну и чем же Си меньше скрывает машину, чем Паскали и Бейсики? printf более низкоуровневый, чем write?
Ни фига не сложно потом осваить нюансы - обучение должно идти от простого к сложному. Вначале проще объяснить человеку концепцию файла как именованного хранилща данных, а потом ему загонять про сектора, дорожки, головки и файловые системы. Попробуйте объяснить пятикласснику в рамках курса математики понятие бесконечности. Куда оно ему - намного продуктивнее сказать, что делить на 0 нельзя и потом в рамках теории пределов обяъснить, что как и раньше делить на 0 нельзя, но под этой операцией мы теперь понимаем не деление собственно на 0, а на бесконечно малую величину.
Паскаль в плане обучения не менее хорош, чем Си - там действительно мало лишнего, язык заточен не на создание 3Д-движков, а на реализацию программистом алгоритмов. Там мало модулей, общее число функций в них не столь велико, как в Си. Важно не научить прогера писать #include <stdio.h> при использовании printf, а научить реализовывать алгоритмы, освоив конструкции языка. Для понимания всех преимуществ Си и Си++ нужно вначале столкнуться с трудностями в Паскалях и Бейсиках. Эти простые языки и создавались как средства обучения. Аналогия: давайте армия будет учить пилотов без тренажеров (они ведь не могут в полной мере сравниться с самолетом), атомщиков на действующих реакторах, врачей на живых людях. Вопрос в том, что прогер не должен рассчитывать на освоение языка "одного и на всю жизнь" - поэтому обучение не на Си вполне нормально сочетается с переходом на него в последующем. ИМХО.
Я знаю только то, что ничего не знаю ... потому и обречен вечно учиться.
Спасибо сказали:
Аватара пользователя
heil0
Сообщения: 545
Статус: Депрессивный токарь с Межделмаша
ОС: *buntu, OpenSolaris

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение heil0 »

ИМХО, обучение программированию лучше всего проходит в условиях, приближенных к боевым. :)
iMisanthrop
heil0's blog
heil0@jabber.ufanet.ru
Linux registered user #400177.
Спасибо сказали:
Аватара пользователя
rolano
Сообщения: 845
Статус: еще один юзер FreeBSD
ОС: какая-то

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение rolano »

А чем хоть не устраивает Паскаль? Нету классов и шаблонов? Они сильно нужны при организации сортировки массива?
Я знаю только то, что ничего не знаю ... потому и обречен вечно учиться.
Спасибо сказали:
Аватара пользователя
Saint_Byte
Сообщения: 57
ОС: ASP 11

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение Saint_Byte »

Просмотрение на сурцы ... Я спераю алгоритмы часто , а ещё я даже у кого-то стиль спер =)

Чем больше программер может списать тем выше он (с) Неизввестнный
MyBlog
[Вот кто я!] [Манчкин 7%] [Убийца 3%] [Тусовщик 13%] [Исследователь 77%] [Узнай кто ты!]
Спасибо сказали:
Аватара пользователя
ety
Сообщения: 358
ОС: Linux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение ety »

rolano писал(а):
23.10.2006 12:08
Ну и чем же Си меньше скрывает машину, чем Паскали и Бейсики? printf более низкоуровневый, чем write?

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

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

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

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

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


Важно не научить прогера писать #include <stdio.h> при использовании printf, а научить реализовывать алгоритмы

алгоритм определяет проблема, которую он решает :)

А чем хоть не устраивает Паскаль?

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

у амеров, к примеру, до сих пор траблы по переводу кода с Ады на Си.
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
Спасибо сказали:
Аватара пользователя
ynkulbyh
Сообщения: 24
ОС: archlinux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение ynkulbyh »

ety писал(а):
16.10.2006 20:22
по книгам

хакеры книги не читают - Ричард Столман, как и Билл Гейтс учились смотря на исходники.

но если оч хочется, то только две: "The C Programming Language" и "Unix Programming Environment", - все остальное это порча лесных массивов.


То то гейтс предлагает тем, кто осилил д.кнута прислать ему резюме.
Спасибо сказали:
Аватара пользователя
ety
Сообщения: 358
ОС: Linux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение ety »

ynkulbyh писал(а):
23.10.2006 13:09
ety писал(а):
16.10.2006 20:22

по книгам

хакеры книги не читают - Ричард Столман, как и Билл Гейтс учились смотря на исходники.

но если оч хочется, то только две: "The C Programming Language" и "Unix Programming Environment", - все остальное это порча лесных массивов.


То то гейтс предлагает тем, кто осилил д.кнута прислать ему резюме.

ах вот почему вы все так на Кнута то налягли, голубчики....
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
Спасибо сказали:
Аватара пользователя
rolano
Сообщения: 845
Статус: еще один юзер FreeBSD
ОС: какая-то

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение rolano »

2 ety
Унификация - это хорошо. Пока положительные стороны перевешивают отрицательные. Представьте себе - при программировании у людей разные приоритеты! Кому нужна скорость - тот пишет на Ассемблере (преимущества Ассемблера признавали и создатели Юникса, но предпочли переносимость), кому надо мало ручного кода - берут Визуал Си. Очнь хочется взглянуть на программера, который будет писать дрова на Визуал Си или на Ассемблере кодить игровой движок.
И америкосовские ценности - тоже хорошо. Только почему-то не америкосовские, а российские, начинавшие хрен знает на каком железе кодить, программеры пользуются спросом в мире. И наверно неплохо было бы поклоняться Си, а остальных предать анафеме и публично жечь учебники по ним?
Про спецшколы - очень спорно их положительное влияние в целом. Наверно, пятикласснику можно вдоблить интеграл и логарифм, комплексные числа, эллиптические функции и т.д., только смысла мало. Обучение на начальном этапе должно заложить базис, а не выдать готовое здание "под ключ". Готовое здание формируется очень долго, потому что после общего обучения наступает специализированное. И там технари проходят интегралы нескольких переменных, ряды Фурье, тензоры, операторы и т.д. И медику Ваши тензоры не упали - он нагружен химией и биологией. Так кто из них круче, кто правильнее, если один считает мосты, а второй - лечит людей?
Представьте себе - программеры пишут на Питонах, Явах, которые появились сравнительно недавно. Им не было лень осваивать эти языки - потому что они отталкиваются от задачи, а не "я выучил Си, а вы все тут, сцуко, ни хрена не понимаете в программировании". И вряд ли можно ожидать, что появление новых языков на этом остановится.
По поводу траблов амеров. Бл...ь, у них постоянно какие-то траблы: то Садамы Хусейны заеб...ли, то шаттлы валяться, то очередной придурок расстрелял из папиного ружья одноклассников... Если уж они такие дебилы, что не могут переписать алгоритм на другом языке, то это воистину ИХ проблемы
Я знаю только то, что ничего не знаю ... потому и обречен вечно учиться.
Спасибо сказали:
Аватара пользователя
ety
Сообщения: 358
ОС: Linux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение ety »

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

уверен, ваш труд будет увековечен 11-м пунктом вот тут, с пометкой вроде ПаскудОС =)

rolano писал(а):
23.10.2006 13:37
Унификация - это хорошо. Пока положительные стороны перевешивают отрицательные.

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

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

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

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

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

И наверно неплохо было бы поклоняться Си, а остальных предать анафеме и публично жечь учебники по ним?

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

Про спецшколы - очень спорно их положительное влияние в целом. Наверно, пятикласснику можно вдоблить интеграл и логарифм, комплексные числа, эллиптические функции и т.д., только смысла мало. Обучение на начальном этапе должно заложить базис, а не выдать готовое здание "под ключ". Готовое здание формируется очень долго, потому что после общего обучения наступает специализированное. И там технари проходят интегралы нескольких переменных, ряды Фурье, тензоры, операторы и т.д.

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

Так кто из них круче, кто правильнее, если один считает мосты, а второй - лечит людей?

юзаем разные системы классов.

rolano писал(а):
23.10.2006 13:37
Представьте себе - программеры пишут на Питонах, Явах, которые появились сравнительно недавно. Им не было лень осваивать эти языки - потому что они отталкиваются от задачи, а не "я выучил Си, а вы все тут, сцуко, ни хрена не понимаете в программировании". И вряд ли можно ожидать, что появление новых языков на этом остановится.

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

rolano писал(а):
23.10.2006 13:37
По поводу траблов амеров. Бл...ь, у них постоянно какие-то траблы: то Садамы Хусейны заеб...ли, то шаттлы валяться, то очередной придурок расстрелял из папиного ружья одноклассников...

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

rolano писал(а):
23.10.2006 13:37
Если уж они такие дебилы, что не могут переписать алгоритм на другом языке, то это воистину ИХ проблемы

они не такие дебилы что-бы вручную переписывать, и получать зеленый глючный код, а пребегают к рекомпилерам и конверторам, которые выдают малочитаемый поток goto, как на бэйсике.
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
Спасибо сказали:
Аватара пользователя
rolano
Сообщения: 845
Статус: еще один юзер FreeBSD
ОС: какая-то

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение rolano »

А вот про написание ОСи на Паскале здесь речь не шла. И никто не говорил, что Паскаль велик - это тут налетели и начали "Дельфи/Паскаль - фуфло, только лузеры пишут на этом убожестве". Вопрос в том, подходит ли Паскаль для целей обучения программированию или надо сразу садиться на Си и махаться с ним до просветления. Паскаль как раз и задумывался как учебный язык, именно так я его и воспринимаю. Без претензий создания на Паскале ОСей.
"юзаем разные системы классов"... Вы хоть сами поняли, что сказали? Если инженер не понимает как рассчитывается изгиб балки, но есть класс, это реализующий, то разве можно назвать такого человека инженером? Вам я желаю всю жизнь сталкиваться с врачами, которые будут использовать классы Таблетка, Микстура, Скальпель, не понимая при этом как оно работает. Зато будут умные возгласы -"ой, я тут перегрузил метод Резать для нового вида скальпеля - что-то пациенты мрут". Вот тогда наш спор и разрешится...
Я знаю только то, что ничего не знаю ... потому и обречен вечно учиться.
Спасибо сказали:
Аватара пользователя
ety
Сообщения: 358
ОС: Linux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение ety »

rolano писал(а):
23.10.2006 14:25
Вам я желаю всю жизнь сталкиваться с врачами, которые будут использовать классы Таблетка, Микстура, Скальпель, не понимая при этом как оно работает.

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

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

никто не говорил, что Паскаль велик - это тут налетели и начали "Дельфи/Паскаль - фуфло, только лузеры пишут на этом убожестве".

паскаль/дельфи убивают моск, ибо этим "лузерам" потом влом переучитваться на сишку. допустим, вы изначально выросли на русском, вам потом оч интересно переучитваться на эсперанте?
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
Спасибо сказали:
Аватара пользователя
rolano
Сообщения: 845
Статус: еще один юзер FreeBSD
ОС: какая-то

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение rolano »

Вот только не надо про "влом". Я начинал с Паскаля, потом плавненько начал осваивать Си - без фанатизма и понтов. Пока процесс идет нормально. Может все-таки разделим связку Паскаль=ленивый?
Я знаю только то, что ничего не знаю ... потому и обречен вечно учиться.
Спасибо сказали:
Аватара пользователя
Warderer
Модератор
Сообщения: 1056
Статус: киберпИнгвин на гусеничном ходу
ОС: Debian unstable

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение Warderer »

rolano
+1
Согласен с тем, что не паскаль портит людей а отсутствие систематизировнного подхода к программированию и соблазнение форморисовательством. Мне отлично известно, что на Object Pascal+VCL можно писать весьма недурные по удобству программы. При этом они более читаемы, чем код на C\C++. А то, что кому-то сложно после этого перейти к C, так это далеко не паскаля проблемы.
Читаю вслух с выражением маны - $50/ч + стоимость звонка. Настраиваю сервисы за Вас - $100/ч + стоимость выезда и проживания.
И восемь строк матом...(бесплатно)
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение Portnov »

ety
Накатал было длиннющий ответ... Но потом стер - зачем флейм провоцировать :)

Попытаюсь по существу. Язык программирования для обучения - очень зависит от того, с какой целью обучаем. Если это общее образование в школе, то имеет смысл давать паскаль или родственный язык (оберон, ада или модула). Если обучаем, извините, будущего быдлокодера, то обучаем тому единственному языку, который он должен знать. Если обучаем будущего программиста - то, имхо, обучать надо а) приемам проектирования программ, б) алгоритмам, в) технологиям, г) умению создавать и оценивать алгоритмы, ну наверно еще что-то упустил. Язык программирования используется только для иллюстраций. (см. например, "Concepts, Methods and Techniques of Computer Programming" двух бельгийцев, легко гуглом ищется). В этом плане идеальный язык - Mozart, ближайшее его приближение из имеющих качественные реализации - Haskell. В упомянутой книжке в основном используется Mozart, и кратко упоминается еще несколько языков. До понятия состояния авторы добираются к шестой главе, до ООП - к седьмой.

Если программист знает один язык, и ленится изучить другой - это, извините, не программист, а быдлокодер. Совершенно вне зависимости от того, какой язык он знает.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение georgy_sh »

Portnov писал(а):
23.10.2006 17:05
Если программист знает один язык, и ленится изучить другой - это, извините, не программист, а быдлокодер. Совершенно вне зависимости от того, какой язык он знает.

+1
Солидарен. Причем не только с выделенным фрагментом, но и всем постом.
Спасибо сказали:
Аватара пользователя
ety
Сообщения: 358
ОС: Linux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение ety »

Portnov писал(а):
23.10.2006 17:05
Если программист знает один язык, и ленится изучить другой - это, извините, не программист, а быдлокодер. Совершенно вне зависимости от того, какой язык он знает.

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

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

посему я сразу выбрал С/C++ как наиболее универсальный, решая этим все заморочки проблемы выбора - пока кто-то думает на каком из нескольких сотен языков ему реализовывать алгоритм - мы его уже реализуем =)


что касается концептов - их можно классически начертать на бумашке - квадратиками/ромбиками/элипсиками, как это делалось в давнии времена.
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение Portnov »

Эххх... всетаки отвечу...
(ety @ Oct 23 2006, в 19:44) писал(а):.. лично я не то что-бы очень ленюсь изучать, просто если и успеешь изучить все существующие языки, то уж навряд-ли привыкнешь к ним, да и ничего особо нового принести не может.

"Если язык не содержит чего-то существенно нового для тебя - его не стоит изучать" (с) кто-то из великих, по-моему, Дейкстра. Только вы вот, судя по вашим постам, всего-то и знаете один (ну может два) язык. И делаете странное обобщение - что никакой другой язык не содержит ничего нового. Ну хорошо, Паскаль по сравнению с С действительно мало чего нового содержит (собственно, одно различие - строгая типизация). Но вот те же Haskell, Mozart, Erlang, Lisp, Forth, OCaml, Clean, Smalltalk, Ruby - не то чтобы содержат новое, а вообще мало чего общего с С имеют.

(ety @ Oct 23 2006, в 19:44) писал(а):так-же - я знаю инглишь и русский, а вот китайский меня изучать уже не тянет.

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

(ety @ Oct 23 2006, в 19:44) писал(а):посему я сразу выбрал С/C++ как наиболее универсальный,

Во-первых, в сотый раз - С и С++ это существенно разные языки. Во-вторых - ни один из них не является "наиболее универсальным" - если "наиболее универсальный" язык вообще существует, то это Mozart.

(ety @ Oct 23 2006, в 19:44) писал(а):пока кто-то думает на каком из нескольких сотен языков ему реализовывать алгоритм - мы его уже реализуем =)

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

Код: Выделить всё

dlist n = (mod n 10) : (dlist (div n 10))
kthdig n k = (dlist n) !! k
lucky n = ((kthdig n 0)+(kthdig n 1)+(kthdig n 2))==((kthdig n 3)+(kthdig n 4)+(kthdig n 5))
luckies m n = filter lucky [m..n]
main = print (luckies 1 999999)

(это Haskell, причем решение не оптимизировано никак, написано "как придется"). Ждем вашего.

(ety @ Oct 23 2006, в 19:44) писал(а):что касается концептов - их можно классически начертать на бумашке - квадратиками/ромбиками/элипсиками, как это делалось в давнии времена.

Набросайте мне, плиз, на бумажке ромбиками концепт ядра Linux.

Все, постараюсь в этой теме молчать...
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение edoc_modnar »

ety
Те, кто не готов познавать новое, зациклившись на чем-то одном, как показывает практика - люди недалекие. И менять свою точку зрения с течением времени - это нормально.
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Аватара пользователя
rolano
Сообщения: 845
Статус: еще один юзер FreeBSD
ОС: какая-то

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение rolano »

2 ety
Никто не заставляет Вас становиться полиглотом :) Если Вас действительно устраивает Си - это просто замечательно. Но ведь люди пишут и веб-приложения, и научные расчеты делают - как им быть? Учить обязательно Си и потом посыпать голову пепелом, что в нем нету того, что нужно именно им? Да, Си - один из универсальных языков. Но универсальные решения не всегда оптимальные - и это тоже одна из причин появления специфических инструментов для специфичных задач. И если Вы не знаете, чем именно будете заниматься в дальнейшем, то Си - лучший выбор. Язык известен, позволяет создавать большие приложения и масштабировать их разработку. Но если Вы точно знаете, что будете ваять динамические страницы, то придется посмотреть в сторону PHP, Perl и чего там еще есть. Или же все задачи ДОЛЖНЫ решаться на Си, даже если их можно решить менее геморойно на чем-то еще?

P.S. Я вообще-то не отношусь к дельфятникам, но еще больше не люблю фанатизм - он мешает конструктивному диалогу, а потом все доходит до "землю - крестьянам, заводы - рабочим, трупы - гробовщикам, патроны - красноармейцам. А кто был ничем, тот встанет в семь. В крайнем случае - в восемь".
Я знаю только то, что ничего не знаю ... потому и обречен вечно учиться.
Спасибо сказали:
Аватара пользователя
ety
Сообщения: 358
ОС: Linux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение ety »

Portnov писал(а):
23.10.2006 18:05
"Если язык не содержит чего-то существенно нового для тебя - его не стоит изучать" (с) кто-то из великих, по-моему, Дейкстра. Только вы вот, судя по вашим постам, всего-то и знаете один (ну может два) язык. И делаете странное обобщение - что никакой другой язык не содержит ничего нового. Ну хорошо, Паскаль по сравнению с С действительно мало чего нового содержит (собственно, одно различие - строгая типизация). Но вот те же Haskell, Mozart, Erlang, Lisp, Forth, OCaml, Clean, Smalltalk, Ruby - не то чтобы содержат новое, а вообще мало чего общего с С имеют.

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


Portnov писал(а):
23.10.2006 18:05
Слава Б-гу, что вам при этом не приходит в голову называть себя лингвистом/языковедом. Ассоциация понятна?

а я и не разрабатываю новых языков - я, как филолог, стараюсь хорошо и правильно говорить на одном :)

Portnov писал(а):
23.10.2006 18:05
Во-первых, в сотый раз - С и С++ это существенно разные языки. Во-вторых - ни один из них не является "наиболее универсальным" - если "наиболее универсальный" язык вообще существует, то это Mozart.

не совсем, C++ есть только нативная поддежка стиля работы с обьектами, но при желании все классы легко разворачиваются в чистый C

Portnov писал(а):
23.10.2006 18:05
Пожалуйста, простая задачка: выписать список счастливых билетов (шестизначных чисел, у которых сумма трех первых цифр равна сумме трех последних). Вот мое решение:

Код: Выделить всё

dlist n = (mod n 10) : (dlist (div n 10))
kthdig n k = (dlist n) !! k
lucky n = ((kthdig n 0)+(kthdig n 1)+(kthdig n 2))==((kthdig n 3)+(kthdig n 4)+(kthdig n 5))
luckies m n = filter lucky [m..n]
main = print (luckies 1 999999)

(это Haskell, причем решение не оптимизировано никак, написано "как придется"). Ждем вашего.

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

Код: Выделить всё

main() {
    for(int i = 0; i < 999; i++)
        for(int j = 0; j < 999; j++)
            if(i%10+i/10+i/100 == j%10+j/10+j/100)
                printf("%03d%03d\n", i, j);
}


Portnov писал(а):
23.10.2006 18:05
Набросайте мне, плиз, на бумажке ромбиками концепт ядра Linux.

ядро это не алгоритм.

Все, постараюсь в этой теме молчать...

я тоже. тема давно уже перерасла в жоский флейм со мной в роли темного властелина покушающегося на все святое :)
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение elide »

но и на сишке сее отлично прокатывает

Код: Выделить всё

main() {
    for(int i = 0; i < 999; i++)
        for(int j = 0; j < 999; j++)
            if(i%10+i/10+i/100 == j%10+j/10+j/100)
                printf("%03d%03d\n", i, j);
}
не позорься. твоя программа выдает менее 20% всех счастливых билетиков.
это наглядно показывает, что фанатики не могут решить даже простейшую задачу (:
слава роботам!
Спасибо сказали:
Аватара пользователя
ety
Сообщения: 358
ОС: Linux

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение ety »

elide писал(а):
23.10.2006 19:00
но и на сишке сее отлично прокатывает

Код: Выделить всё

main() {
    for(int i = 0; i < 999; i++)
        for(int j = 0; j < 999; j++)
            if(i%10+i/10+i/100 == j%10+j/10+j/100)
                printf("%03d%03d\n", i, j);
}
не позорься. твоя программа выдает менее 20% всех счастливых билетиков.
это наглядно показывает, что фанатики не могут решить даже простейшую задачу (:

угу, вызывать функцию pow было в лом, и она в любом случае неправильна, более правильно без двух циклов, аля while(i < 999) {/*все пермутации разрядов*/}, и если прога Portnov-а это делает, то на х. это Haskell перегруженный левыми хай-левел операциями.
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение Portnov »

(ety @ Oct 23 2006, в 20:32) писал(а):там похоже специальнаые выскоуровневые кейворды для экстракции n-го разряда, ...

никаких "высокоуровневых кейвордов", расписываю с комментариями (начинаются с "--"):

Код: Выделить всё

-- список цифр dlist числа n  - это список, первый элемент которого (n mod 10), а дальше идет список цифр числа  (n div 10):
dlist n = (mod n 10) : (dlist (div n 10))
-- (a:list - значит добавить элемент a в начало списка list)
-- list !! k - это то же, что в С list[k]
kthdig n k = (dlist n) !! k -- простая функция для извлечения k-го элемента
-- проверяем является ли n счастливым:
lucky n = ((kthdig n 0)+(kthdig n 1)+(kthdig n 2))==((kthdig n 3)+(kthdig n 4)+(kthdig n 5))
-- фильтруем список [m..n], оставляя только счастливые:
luckies m n = filter lucky [m..n]
-- ну и печатаем это все
main = print (luckies 1 999999)


Код: Выделить всё

main() {
    for(int i = 0; i < 999; i++)
        for(int j = 0; j < 999; j++)
            if(i%10+i/10+i/100 == j%10+j/10+j/100)
                printf("%03d%03d\n", i, j);
}


К сожалению, решение неправильное. Например, в выводе нет счатсливого числа 975768 ( 21 = 9+7+5 = 7 + 6 + 8).

(ety @ Oct 23 2006, в 21:24) писал(а):...если прога Portnov-а это делает, то на х. это Haskell перегруженный левыми хай-левел операциями.

Ну что сказать? ГЫГЫ.

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

Все, все, я молчу ;)

ЗЫ. http://haskell.org/definition/haskell98-report-html.tar.gz - полное описание Haskell, 202Kb. (если что, книжка Страустрапа в html+gz - 324Kb).
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение elide »

Код: Выделить всё

1000000.times {|i|
        s = i.to_s
        s = '0' * (6 - s.size) + s
        puts s if s[0,3].sum == s[3,3].sum
}
ruby, ага.

ety
ну... причины... следствия... кого это волнует? задача не решена. вот и все....
слава роботам!
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Можно ли научиться программированию самостоятельно,по книгам?

Сообщение Portnov »

elide
Респект, красиво.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали: