0 / 1 / 1
Регистрация: 07.10.2017
Сообщений: 86
|
|
1 | |
Как лучше поступить?08.04.2018, 15:40. Показов 659. Ответов 7
Метки нет (Все метки)
Добрый день! Я студент 1 курса специальности "Компьютерные науки". Сейчас мы изучаем язык Си, вроде, на втором С++ и Веб.
По сути, учим только базу, не заходя дальше программы. Думал, где-то найти зарубежную книгу по программированию, но теперь надо определиться с языком: С или С++, ведь С++ актуальнее, или вообще какой-нибудь другой ЯП. Думаю, может рациональнее на протяжении всего обучения в ВУЗе изучать только один язык, а то получится, что программировал на нескольких, а толком ничего серьезного сделать не смогу. Как лучше поступить, выбрать что-то одно или совмещать? Также вопрос: можно ли где-то купить в бумажном варианте книгу на английском по ЯП б/у, а то оригиналы стоят слегка дорого. И есть ли книги\сборник алгоритмов, так как хочу на 2 курсе поучаствовать в олимпиаде по программированию. Спасибо.
0
|
08.04.2018, 15:40 | |
Ответы с готовыми решениями:
7
Как лучше поступить? Как лучше поступить? Как лучше поступить? Как лучше поступить? |
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
09.04.2018, 13:28 | 2 |
Нет, потому что в этом случае твой словарь будет ограничен только одним языком и его идиомами. Если мы говорим об обучении и расширении кругозора, то лучше изучать несколько, пусть и не досконально.
Лучше учить разные языки. В смысле, не одинаковые. Для определения «одинаковости» можно выделить, например, парадигму и типизацию. Перебрать возможные значения для этих параметров, на каждое сочетание выбрать язык. Некоторые примеры. Процедурный язык со статической типизацией. Кандидаты: Pascal, C. Если уже писали на С, хвататься за паскаль смысла нет. Объектно-ориентированный со статической типизацией: С++, Java, C#. Здесь, правда, еще играет роль управление памятью, которое ощутимо отличается в С++ и Java/C#. Поэтому можно взять С++ и еще один. Функциональный с динамической типизацией: любой из семейства Lisp. Функциональный со статической типизацией: Haskell, F#, ML, OCaml, Scala. Причем Scala сильно отличается от семейства ML, поэтому можно взять его и еще один какой-нибудь. Объектно-ориентированный с динамической типизацией: Python, Ruby, PHP. Скриптовый язык для рутины: bash, PowerShell (?). Ну и так далее. Это только ориентир, список можешь составлять на свой вкус, приоритеты тоже на свое усмотрение.
0
|
1824 / 732 / 99
Регистрация: 01.10.2012
Сообщений: 3,746
|
|
10.04.2018, 07:29 | 3 |
С - замечательный язык, который, однако, мало кто любит. Причина - говнокодить на С тяжко, все должно быть сделано аккуратно и скрупулезно, иначе работать не будет. А вот на тех же плюсах - пожалуйста, особенно привлекая std. А уж на жабе.. Поэтому начинать с С - хорошая концепция преподавания.
Книги - правду сказать, я никогда не верил в их эффективность, но чем раньше Вы научитесь читать английские оригиналы - тем лучше. Пытаться это как-то обойти - пустая трата времени. А главный метод совершенствования - решать задачки. Например
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
10.04.2018, 14:23 | 4 |
В первую очередь нужно изучать не языки, а концепции. Так как в разных языках используются разные концепции, то, чтобы знать их все, нужно изучать различные языки. Но не нужно изучать их подробно. По большому счёту даже не обязательно уметь решать на них практические задачи (типа, загрузить html страницу с сайта, распарсить и сохранить данные в csv файл). Важно понимать принципы.
Как минимум один язык нужно изучать более детально. В частности, уметь решать практические задачи, знать окружение (библиотеки, фреймворки и т.д.). Позже один язык нужно изучить очень подробно. Знать, что скрывается за каждой инструкцией (какие инструкции процессора за ней стоят, что при этом происходит с памятью, со стеком и т.д.). Обычно решение олимпиадной задачи (начального уровня) сводится к выбору подходящей структуры данных. Иногда требуется знание математики (в основном - теории чисел). Просто изучайте структуры данных.
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
10.04.2018, 14:25 | 5 |
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
10.04.2018, 14:41 | 6 |
В отдельную категорию/категории, на свое усмотрение. Я и не пытался дать исчерпывающую классификацию.
0
|
Модератор
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
|
|
10.04.2018, 17:16 | 7 |
Лично мне не нравится такая классификация.
Типизация может быть не только статической или динамической. Она также может сильной или слабой. Она может различаться по типу связывания. Она может быть явной или не явной. Её может вообще не быть. В языках со статической типизацией могут быть механизмы, позволяющие использовать динамическую типизацию. В языках с динамической типизацией могут быть механизмы, позволяющие использовать статическую типизацию. Многие языки являются мультипарадигменный. Например, F# подходит во все перечисленные категории (процедурный, объектно-ориентированный, функциональный, скриптовый, со статической типизацией, с динамической типизацией). Я не вижу смысла изучать С++, если не собираешься на нём писать. Для человека, знающего Си и какой-нибудь ООП язык, там мало чего нового. Я не вижу смысла изучать Python/Ruby/PhP, если не собираешься на нём писать. Для человека, знающего какой-нибудь "статический" ООП язык, там мало чего нового. Я не вижу смысла изучать PowerShell. Разве для того, чтобы понять, насколько ужасна слабая типизация, когда она ещё динамическая и неявная. Итого из всего списка остаются Lisp, Haskell и какой-нибудь язык для работы. Язык для работы определяется в первую очередь платформой (нативный код, JVM код, .NET код). Причём, во втором варианте, не зависимо от выбранного языка, нужно знать Java, а в третьем варианте - C#. Но это не значит, что начинать надо с одного из них. Конечно, можно выбрать что-нибудь специфическое (Fort, K, Erlang ...) или экзотическое (RPG, 1C, Delphi, ...), но я бы всё-таки ориентировался на наиболее востребованные языки.
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
10.04.2018, 17:31 | 8 |
А я и не говорил, что ее обязательно нужно принимать. Нужно уметь составить свой список.
Я в курсе.
0
|
10.04.2018, 17:31 | |
10.04.2018, 17:31 | |
Помогаю со студенческими работами здесь
8
Как лучше поступить? Как лучше поступить? Как лучше поступить. Как лучше поступить? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |