основы программирования

Вопросы по программированию, не подходящие в другие разделы.

Модераторы: Naeel Maqsudov, C_O_D_E

Ответить
ingenerum
Сообщения: 3
Зарегистрирован: 20 авг 2015, 20:46

20 авг 2015, 20:48

Здравствуйте, уважаемые форумчане.

Хочу освоить программирование. Целей пока конкретных нет , т.е. область с которой буду работать пока не выбрал , конкретный язык программирования тоже пока не выбран. Хочу начать непосредственно с азов, чтобы уловить самую суть так сказать. Слышал что начинать надо с Алгоритмов программирования. И первый вопрос какую книгу(ги) посоветуете для освоения. Погуглив наткнулся на советы о трех авторах Кормен, Кнут и и Н. Вирта Но первые два удивили математической направленностью в своих задачах . Вопрос считаете ли вы эти книги реально хорошими для освоения алгоритмов ( если да, то почему?) или может стоит начинать с более простых книжек чем книги первых двух авторов . Второй вопрос почему большая часть книг по алгоритмам завязывается на математике , ведь программированием занимаются не только с целью вычислительных задач (математических толка) , но и множества других , так почему тогда большинство советует этих авторов?
Еще вопрос какие еще знания кроме алгоритмов потребуются начинающему или следующим шагом следует выбрать конкретный ЯП и уже делать на нем какие-то задачи?
Слышал так же что хороший программист должен понимать как машина преобразует конкретный ЯП в машинный код то есть как она его интерпритирует и преобразует. Какую литеру на этот счет подскажите или не стоит этим на начальном этапе забивать голову?

И последний вопрос , какой язык на данный момент является перспективным( и в плане широты спектра решаемых задач и в плане влияния на з/п) , что посоветуете?
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

04 дек 2015, 10:17

Алгоритмы в отрыве от языка зубрить бесполезно за одним исключением: если алгоритм проще тех, которые уже умеешь писать, тогда можно и в чистом виде, и то не всегда. Вот когда на одном языке реализовать попробуешь, причём, не в одном варианте, а во множестве вариаций с подробным выводом, может быть даже раздебажишь, усвоишь, не только как алгоритм пишется, но и как он работает, то потом перевод на любой язык будет вопросом знания синтаксиса. А с ноля всё равно что пытаться понять тайный смысл броуновского движения сразу полумиллиона частиц: кроме хаоса ничего не увидишь. Зубрить язык в отрыве от алгоритмов не на много полезнее. Учить надо алгоритмы на примере реализации на языке и одновременно синтаксис языка на примере реализации на нём алгоритмов. Причём, начинать с простейших алгоритмов и простого языка.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

04 дек 2015, 10:34

ingenerum писал(а):Второй вопрос почему большая часть книг по алгоритмам завязывается на математике , ведь программированием занимаются не только с целью вычислительных задач (математических толка) , но и множества других , так почему тогда большинство советует этих авторов?
Какие задачи хочешь решать? Рисование? Вся графика - это приложение геометрии, причём, для задания того, где именно рисовать и какого именно размера проводить линии юзаются координаты, а их надо вычислить. Сортировка массива? Решить эту задачу без математики способен лишь живой мозг, комп же принимает решение о перестановке элементов только сравнивая числовые значения самих элементов или их членов, а это уже математика, хоть и не особо сложная. Причём, тема "массивы" сама по себе сложна в любом языке, сначала надо изучить то, что проще пишется. Поиск в двоичном дереве? Деревья основаны на указателях, а сама тема "указатели" сложна в языке + надо понимать, что такое рекурсия, а её проще изучить на примере факториала. Редактирование текста? Даже само позиционирование букв и каретки на экране не возможно без математики, а если юзать готовый инкапсулирующий данную задачу класс, то всё сведётся к "задача решена до данного проекта" + ООП сам по себе по началу сложен как в языке, так и концептуально. Приходим к тому, что единственная достаточно простая для изучения новичком сфера применения компа - это вычисления в чистом виде. И ЭВМ не спроста называется вычислительной: в информатике, как у Плантона, всё есть число, а все операции с чем бы то ни было основаны на математике. Да и современное слово "компьютер" - это на самом деле заимствованное английское computer, в переводе значащее вычислитель. Причина этого та же.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Din666
Сообщения: 51
Зарегистрирован: 17 июл 2015, 13:25
Откуда: Moscow
Контактная информация:

08 дек 2015, 10:35

В плане ЗП думаю что Java.
А вот если нет цели, то надо просто пробовать как художник пробует различные краски, кисти...
Широта задач тоже понятие относительное, ведь надо учитывать затраты времени на реализацию задачи и последующую скорость исполнения кода. Эти вещи бывают зачастую несовместимы.
На языках более высокого уровня(php, java) быстрее писать код, но время его выполнения будет больше, чем на языке более низкого уровня (c, assembler)
Соответственно чем ниже уровень, тем больше непосредственное взаимодействие с железом.
Считаю что любой программист, даже на java должен в общих чертах понимать что происходит внутри.
Я например изучал в такой последовательности: pascal (в школе), затем assembler, затем увидел , то что я пишу на ассебмлере компилятор СИ делает быстрее и даже в чем-то лучше чем я, с переходом на линукс и отказом от винды: скриптовые языки perl, python, итп. ну условно bash. Теперь си++, вернулся в портированию *nix/windows ))
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

13 дек 2015, 11:43

Каким боком си к низкому уровню? Попробуй без асм-вставок загрузить значение в регистр процессора, или вызывать прерывание. Не получится, в отличие от паскаля. При этом по скорости исполнения он, о чудо, отстаёт от сей. А написать без асма фаг, который будет заражать программы, цепляясь в конец, и ещё проверять их на заражение чем то ещё. Опять не получается. Большие программы, написанные целиком на языке низкого уровня закономерно отстают по времени исполнения из-за не до использования возможностей машин, созданных в ходе их разработки, но переход на код для которых затянул бы разработку этих программ ещё больше. Вот критические фрагменты на низком уровне - это другое дело. А на некоторых тормоза вообще не избежны, не смотря на низкий уровень и разработка даже за неделю не спасает.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Ответить