LINUX.ORG.RU

Очередной вопрос из серии «С чего начать?..»

 , ,


1

5

У меня серьёзные проблемы. Я любитель выдумывать для себя усложнения одно за другим. Когда-то давно я выбрал для изучения (не без помощи пользователей с ЛОРа) язык программирования Си. Книгу купил самую каноничную — K&R. Обучение шло вполне себе хорошо. Пока я не упёрся в тупик нерешённых упражнений из книги. Вначале они вроде такие простые, но чем дальше, тем труднее. Потом купил книгу по Java и внезапно переключился на неё (а зря). Через какое-то время весёлого погружения в мир объектно-ориентированных абстракций я прикрыл обе книги на долгий срок. В школе как раз в том году начали преподавать программирование на Pascal. После Си всё это казалось мне простым и забавным (и язык, и способ преподнесения материала учителем). Сегодня я хочу перейти на другой учебник по Си от братьев Дейтелов, причём на английском языке. Также хочу изучить всю школьную программу по математике и физике (может быть на английском), чтобы сдавать ЕГЭ, да и вообще для развития. Так вооот, ещё мне вдруг пришла в голову сегодня мысль отдаунгрейдиться с Си на Паскаль, чтобы потом почитать книгу Вирта по алгоритмам. Стоит ли? Или есть лучшие книги по алгоритмам (кроме Кнута)? Что со мной не так? Как вообще в данном случае поступить? Сконцентрироваться сейчас на математике и физике с английским? Или что-то ещё?



Последнее исправление: CYB3R (всего исправлений: 1)

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

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

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

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

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

Настолько чуток, что совершенно не принципиально. Из каких-то весомых для новичка вещей припоминаю разве что вшитые в язык строки. Впрочем, нуль-терминированные массивы в С тоже не rocket science. Ещё более-менее нормальная поддержка модулей (interface/implementation). Но как раз модули в учебном процессе всплывают редко. В остальном почти никакой разницы с С нет, кроме чисто синтаксической.

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

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

Чтобы один hello world понять на C, надо лекций 5 прочитать. Препроцессор, указатели, массивы, функции, основы IPC в UNIX. Ну или махать руками и таинственно говорить: «так надо».

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

Чтобы один hello world понять на C, надо лекций 5 прочитать. ... основы IPC в UNIX

а ты как всегда

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

Чтобы один hello world понять на C, надо лекций 5 прочитать. Препроцессор, указатели, массивы, функции, основы IPC в UNIX. Ну или махать руками и таинственно говорить: «так надо».

Да полная ерунда. Можно сказать правильные слова, не вдаваясь в детали. Никакого рукомахательства, всё предельно корректно, но без углубления.

#include <stdio.h>

int main(void)
{
    puts("Hello, World!");
    return 0;
}

Достаточно сказать, что include <stdio.h> нужен для получения доступа к функциям ввода-вывода (можно и без него, но лучше не морочить голову на начальном этапе).

Про main достаточно сказать, что это синтаксическая особенность описания точки старта программы в С. «Так сложилось». И это чистая правда. Про функции можно рассказать потом.

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

puts() ничем не сложней паскалевского WriteLn

Где тут острая необходимость сразу рассказывать про препроцессор, указатели, массивы, функции, основы IPC?

anonymous
()

сконцентрируйся на английском

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

Острой необходимости нет, конечно, так во всех книгах и пишут. Вот только знания в голове лучше всего укладываются последовательно, по кирпичикам, если ничего не оставляется на потом. Hello World на паскале понятен от первой до последней строчки, собственно там надо объяснить две вещи — структура программы на паскале и что значит Writeln.

Чисто с педагогической точки зрения паскаль лучше С подходит в качестве первого языка программирования, чтобы объяснить основы структурного программирования: условный оператор, цикл, функция, процедура, рекурсия, массив. Это сложные для начинающего понятия и если их усложнять, это только отдалит момент, когда в голове всё сложится в единую непротиворечивую модель. А когда есть понимание структурного программирования, изучение С сведётся к изучению указателей, препроцессора и отличий синтаксиса.

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

Hello World на паскале понятен от первой до последней строчки

Такая же куча синтаксических деталей. Даже круче. (если что-то упустил, пардон, я на Паскале последний раз > 15 лет назад писал).

program Hello;
begin
    WriteLn('Hello, World!')
end.

Зачем нужно писать program. Что будет, если не написать? Везде ли будет компилироваться без?

Чем begin...end принципиально лучше и проще main? Почему после WriteLn можно поставить точку с запятой, а после begin - нельзя? Почему точку с запятой после WriteLn в данном случае можно не ставить? Почему после end надо ставить точку, а не точку с запятой? А в других случаях после end точку ставить не надо?

Теперь сравни с Питоном (допустим, Python2):

print "Hello, World!"

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

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

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

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

Везде ли будет компилироваться без?

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

Чем begin...end принципиально лучше и проще main? Почему после WriteLn можно поставить точку с запятой, а после begin - нельзя? Почему точку с запятой после WriteLn в данном случае можно не ставить? Почему после end надо ставить точку, а не точку с запятой? А в других случаях после end точку ставить не надо?

С точками с запятыми там чуть переусложнено, но в целом проблем нет. Ну и вопрос «где ставить точку с запятой» это не концепция. Объявление функции это концепция. Указатель на массив (который на самом деле тоже указатель) строк это концепция. А точки с запятыми и ключевые слова это просто записывается в конспект и особо вдумываться тут не во что.

Теперь сравни с Питоном (допустим, Python2):

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

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

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

писать нужно так и ничего тут объяснять особо не надо

ок :)

Согласно виртовскому стандарту опускать ошибка.

А по стандарту Си надо писать main. Потому что такой стандарт. Ничем не хуже program в Паскале.

Объявление функции это концепция.

Не нужна такая концепция в «Hello, World». Роль main полностью аналогична роли program...begin...end. Более того, если отойти от современного стандарта С, main будет ещё и проще, чем паскалевская конструкция.

С точками с запятыми там чуть переусложнено, но в целом проблем нет.

У тебя может и нет, а я вот помню лютую жесть у половины класса.

Ну и вопрос «где ставить точку с запятой» это не концепция.

main не концепция с таким же успехом.

Указатель на массив (который на самом деле тоже указатель) строк это концепция.

А в турбо-паскале строки имели фиксированный размер 256 байт, где первый байт хранил длину. И этого совершенно не надо было знать для написания «Hello, World». И в Си ничего такого знать не обязательно на первых порах.

Всё же после паскаля изучить ассемблер проще, чем после питона, как мне кажется.

Возможно, но этот аргумент на сегодня тонет в куче минусов Паскаля.

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

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

Возможность работы в интерактивном режиме (так называемый read-evaluate-print-loop, REPL) - это очень здорово для обучения, и не только для обучения! Позволяет быстро экспериментировать.

Но в Питоне программа из одной строчки - это в том числе и абсолютно корректная «целая программа».

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

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

rha
()
Ответ на: комментарий от anonymous
#include <stdio.h>

уже нужно понятие библиотеки, тогда как

begin
  writeln('hello');
end.
не нужно.

int main

уже нужно понятие функций.

void

и о указателях.

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

Хм. Ну твое дело. Хотя «рановато», конечно, рассмешило.

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

Ты хоть в курсе, что void - это просто тип данных? Загляни в K&R приложение A. Какие еще указатели?

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

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

Ты хоть в курсе, что void - это просто тип данных?

тип данных чего? и зачем это в хелловорде?

Понятие функций легко заменяется понятием точки входа в программу

тогда что такое return без контекста функций?

Deleted
()

эммм... а зачем брать более сложную задачу, если не можешь решить простую? вернись к K&R и сделай все задания. не стоит прыгать выше головы: пока не поймёшь основ - будешь блуждать в потёмках и наступать на грабли.
и уж тем более странная идея читать школьную физику и математику на английском. и как это поможет в сдаче ЕГЭ?
паскаль в ВУЗах - это тоже странно. в нашем УрГУ на матмехе точно никакого паскаля не было. но он был университетом с 1920 года, а всё, что стало называться так после 2000 - там, может быть, и паскаль.

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

тип данных чего?

Уж точно не указателя.

и зачем это в хелловорде?

А зачем в хелловорде begin? Что делает этот оператор?

тогда что такое return без контекста функций?

А что такое end без контекста функций?

anonymous
()
Ответ на: комментарий от Deleted
#include <stdio.h>
main()
{
    printf("Hello, world\n");
}

Ну Вы же в курсе, что в K&R никаких int'ов, никаких void'ов, никаких return'ов нет?

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

Да и в С99/С11 return можно не писать:

C11 5.1.2.2.3 Program termination

... reaching the } that terminates the main function returns a value of 0.

Правда есть шанс нарваться на warning.

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

Уж точно не указателя.

не виляй. тип данных чего?

А зачем в хелловорде begin?

А в си {

end без контекста функций?

как } в си.

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

не виляй. тип данных чего?

Си то, оказывается, вообще не знаешь. То void у тебя указатель, то про стандарт не слышал. Гугли ISO/IEC 9899 и читай там про void. Всё написано.

А в си {

Кажется, начинаешь понимать, что program..begin..end такое же заклинание, как и main {}.

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

Книга K&R сделана очень грамотно по моему мнению. Там вас вводят во все эти вещи очень постепенно. В первых программах никакого «return 0;» нет, но потом авторы дают рекомендацию использовать данное ключевое слово в конце main, обуславливая это тем, что таким образом вы сообщаете операционной системе о удачном завершении программы. Потом, когда позднее даётся понятие функций, говорится, что ключевое слово «return» возвращает значение переменной в вызывающую функцию и продолжает выполнение вызывающей функции (надеюсь, понятно объяснил). Там же вам уже скажут, что по сути-то, когда вы пишите в конце функции main «return 0;», вы возвращаете управление «вызывающей функции» — операционной системе, и она продолжает свою работу. Мне кажется это довольно легко. Хотел бы отметить, что команды препроцессора не являются частью языка. Стандартная библиотека Си также не является частью языка.

notoedovshina
() автор топика
Ответ на: комментарий от Deleted

int-ы и void-ы есть. Но они появляются только тогда, когда начинаются рассматриваться функции. void означает, что функция не возвращает никаких значений. Вызывая её откуда-либо, вы предполагаете, что она ничего не вернёт по завершении работы. Если функция типа void, в ключевом слове return вы можете в качестве аргумента указать void, либо написать просто «return;». Что значит дословно на русском «верни управление вызывающей функции».

notoedovshina
() автор топика

Я согласен с тем, что K&R не предназначен для самых-самых новичков. Например, я в самом своём начале этого пути боялся всяких непонятных слов. Я просто брал и выписывал их значение с Википедии в тетрадь. Там было много чего: начиная от «аргумент», заканчивая характерными признаками парадигм. Потом эта боязнь терминов прошла целиком. В K&R нет этих определений. Но с другой стороны, книга будто написана на новичка. Но новичка не в программировании, а в Си.

notoedovshina
() автор топика
Ответ на: комментарий от Deleted

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

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

Си то, оказывается, вообще не знаешь

продолжаешь вилять. Этим только подтверждаешь что не всё просто.

Кажется, начинаешь понимать, что program..begin..end такое же заклинание, как и main {}.

только main - еще и функция, а void - еще типы данных. Всё это так необходимо знать для хелловорда.

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

часть вопросов отпадает, остаются самые сложные.

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

Но с другой стороны, книга будто написана на новичка. Но новичка не в программировании, а в Си.

Керниган и Ричи писали, прежде всего, для коллег-инженеров и научных работников.

Из предисловия к первому изданию:

The book is not an introductory programming manual; it assumes some familiarity with basic programming concepts like variables, assignment statements, loops, and functions. Nonetheless, a novice programmer should be able to read along and pick up the language, although access to more knowledgeable colleague will help

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

Всё это так необходимо знать для хелловорда.

У меня для тебя плохие новости: с таких подходом практически невозможно учиться. Учёба в любой области почти всегда подразумевает определённое упрощение на начальном этапе. Если человек не способен временно удовлетвориться объяснениями уровня Очередной вопрос из серии «С чего начать?..» (комментарий) , у него большие проблемы.

anonymous
()

паскаль - поиграться и развить навыки, не более

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

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

Но C тебя не выучит ООП. У него другой класс задач. Пиши сразу hello world модуль для ядра ;)

Для ООП, нужно знать и продолжать изучать несколько языков. В каждом языке реализация ООП в чем-то ущербная, поэтому нужно чтобы в голове присутствовала некая простая и ясная модель ООП, независящая от реализаций. Тогда будет проще и легче.

Очень полезно изучение ООП-исходников от borland pascal|C и дельфи до современных и альтернативных аналогов (lazarus?). Параллельно оглядываясь на Java, Python, PHP.

Можно поискать для самого начального уровня аналог VB для linux, если есть ;)

Полезен так-же пример реализации ООП-стиля для языка без встроенной реализации ООП.

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

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

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

простая и ясная модель ООП

Академическую литературу по моделям, в том числе ООП, уже дали.

Очень полезно изучение ООП-исходников от borland pascal|C и дельфи до современных

А ты советуешь полную хрень.

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

стоит полистать стурктуры_данных&алго есть программы в pascal|modula-2|oberon(2?) редакциях.

ну и по мере освоения поля(структура данных запись-структура)+методы(вот такие вот алгоритмы)= классы (программы и вообще акторы хьита и вот а.кея как много нодовые(клетко) системы с конкурентым исполнением)

Вирто-книги подтянишь язык его примеров.

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

А ты советуешь полную хрень.

ощущается глубокое владение вопросами ООП

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

это верно для второй(88-89гг) редакции TCPL

и совсем не верно для K&R первой редакции(78-79)

где буквально:

main(){
        printf("Hello world");
}

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

anonymous
()

отдаунгрейдиться с Си на Паскаль, чтобы потом почитать книгу Вирта по алгоритмам. Стоит ли?

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

Для обучения нужно брать язык который 1.Широко используется. 2.Существует более 10 лет. 3.Развивается.

Это гарантирует, что: 1.Язык не помрёт завтра и знания пригодятся. 2.Шанс напороться на баг в компиляторе/библиотеках минимален (а для обучения это важно - знать что накосячил только ты). 3.Самих библиотек множество - интересно будет ковырять любую область применения. 4.Язык живой, т.е. постепенно в него включаются модные фишки.

Си не подходит. Лучше C++ или Java.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)

в тэги python

-2. Programmer Competency Matrix

-1.передай своим подруге/другу, что ничего страшного, пусть сходит к венерологу

0.Будь ща информатизация(которая принесла паскаль в советские школы в середине 80ых) ща бы в школы притащили бы python

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

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

3. если не первая редакция и язык не английский: НЕ КАНОНИЧНО.

4. это прямое преувеличение если прочитать следующее предложение вашего поста.

5.зачем упрямится и упираться? там вполне решаемые упражнения. решай-упражняй!

6. если выполнять упражнения то чем дальше тем легче.

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

8. текстбуки не есть основопологающие прорывные тексты - для ООП(освоения) полезней Дал У., Дейкстра Э., Хоор К. Структурное программирование + модель акторов Хьюита(сведенья в вике либо нагугливается )- ибо обьекты тогда круты когда субьекты в конкурентной среде исполнения - симуляция и прочее много ролевое распредел1нное.(про наследование особо не заморачивайся ибо оно( в части гарантированного повторного использования)зменое масло в чистом виде)

9.Структуры данных(поля)+[итераторы _Степанов этим гордится_] алгоритмы(методы) = программы(классы) Вирта в редакциях pascal|modula-2|oberon(2?) - это 3 разного обьёма книги.

10. Why Pascal is Not My Favorite Programming Language. Brian W. Kernighan, April 2, 1981 (http://www.lysator.liu.se/c/bwk-on-pascal.html)

11. это(то сегодня ...) ведь уже в прошлом?

12. https://psoberoi.github.io/stepanov-civilization/civilization.html from http://www.stepanovpapers.com/#Civilization & http://www.stepanovpapers.com/#Programming_Conversations

ps. Гомер Иллиада ну и посмотри https://ru.wikipedia.org/wiki/Любимец_женщин

pps. печалько, что школа натаскивает(если) алгоритмы из целей финансирующего школы государства(см Платонову Республику) а совсем не метаалгоритмам :)

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

Для изучения основ ООП, в частности событийной концепции и полиморфизма, инкапсуляции вполне сойдет.

Разве кому-то удалось переплюнуть TV? Есть что-то лучшее? Очень было бы интересно узнать.

anonymous
()

Что со мной не так? Как вообще в данном случае поступить? Сконцентрироваться сейчас на математике и физике с английским? Или что-то ещё?

всё не так. самое плохое что у тебя нет цели. для чего английский? может лучше китайский?

Karapuz ★★★★★
()

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

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

IvanR ★★★
()

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

а книжка вот она: http://infolab.stanford.edu/~ullman/focs.html

IvanR ★★★
()

если паскаль освоен, можно сделать марш-бросок в сторону оберонов, и BlackBox Component Pascal. например, почитать и прорешать книгу Warford: там как раз про алгоритмы, деревья, структуры данных, либо новую версию от Вирта.

Так вооот, ещё мне вдруг пришла в голову сегодня мысль отдаунгрейдиться с Си на Паскаль, чтобы потом почитать книгу Вирта по алгоритмам. Стоит ли?

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

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

У меня серьёзные проблемы. Я любитель выдумывать для себя усложнения одно за другим.

Что со мной не так? Как вообще в данном случае поступить? Сконцентрироваться сейчас на математике и физике с английским? Или что-то ещё?

что-то ещё: поставь себе цель и освой какой-нибудь time boxing, например «Pomodoro Technique». чтобы не распыляться и не разбрасываться.

цели должны быть конкретны, реалистичны, достижимы (S.M.A.R.T.). «изучить вообще» — это не цель. цель — к такому-то строку, в таком-то объёме, такого-то качества (тактические цели, полгода-год). чтобы потом применить к ... , и выйти на ... (стратегические цели, год-три-пять лет и выше). и быть востребованым среди ... (маркетинговые цели, «кому это нужно вообще?»)

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

историю искусств, например: литературное мастерство в малых формах (расказы), стихи с ограничениями (хайку/танка/лимерики/буриме) или там картинки порисуй (в стиле минимализма).

потому что «усложнять просто — упрощать сложно», а ты как раз всё усложняешь, в том числе и чересчур ненужно; и потому что «совершенство достигается не когда нечего больше добавить, а когда уже нечего убрать лишнего ненужно»

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

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

ну паскаль как раз хорошо изучать в сравнении с си, например, в отличиях. я вот лет с 5 программирую ручкой в блокнотике (лет с 10 — по нормальному), и у меня был маршрут примерно такой: си М. Болски и K&R (и понимание, что программа на языке программирования это формула), затем Лого (и откровение, что синтаксис языка программирования может быть человекопонятной прозой, для исполнителя-компьютера), затем паскаль (и ощущение какой-то учебной непрактичности), фортран, бейсик (родители книжку купили. язык как язык, ничего особенного. ADVENTURE и Interactive Fiction в духе Zork-а и на фортране писать можно было), парсинг ЕЯ через ЯП (очень схематично, что вы хотите от школоты), затем 2-3 ассемблера (z80 от спектрума, m68k от амиги и x86 от писюка).

затем школа была другая и тут уже физика и математика по 2-3 курсу мехмата, и кружок физиков, где мы лет в 14-15 писали демонстрашки (каких-то там опытов), а когда над душой вахтёр не стоял — резиденты, дёмки для демосцены и игрушки-поделки типа вольфа с рейскастингом, дюка и кваки с BSP-разбиением. один друг тогда САПР написал, и что-то типа 3D Studio (досовское всё, конечно же). на паскакале писал.

писали тогда на паскале 5.5/7.0 и Turbo C++ 2.0 и Borland C++ 3.

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

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

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

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

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

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

вот кстати, у Гамильтона по кватернионам на английском, про гамильтониан, роторы и дивергенцию — вполне простым языком написано.

а про матан если сравнить Лейбница и Ньютона — Ньютон тот ещё путаник, про это его «исчисление флюксий». но занятно, как из понятий «ultimate equal» и «ratio's of equality», непрерывности и чисто геометрических картинок вот тут выводит свои интегралы и производные, и устанавливает изоморфизмы между «уравнениями в морфизмах», пределами и копределами из теории категорий  — таким вот простым, наглядным геометрическим способом. доказательства правда, какие-то витеиватые и немного словоблудные, у Лейбница имхо проще про вариации. интересно Гука почитать, которого Ньютон не взлюбил. он вроде экспериментатор, должен проще выражаться.

а зачем брать более сложную задачу, если не можешь решить простую?

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

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

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

ландавшица того же, например. или Перельмана, который Яков.

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

Начинай с Фортрана, сдалась тебе эта новомодная хипстота.

с JOSS надо. от него произошли Basic, MUMPS, и BCPL (который затем B и затем C). ах да, фокал ещё

;-))))

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