Pull to refresh
10
0
Send message

Спасибо, было интересно читать ваш комментарий.

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

В книге по Си есть зачатки ООП в виде указателей на функции и структуры. В С++ ООП уже в синтаксисе языка. И наверное было бы неправилно сразу дать Java т.к. остались бы пробелы, которые можно было бы понять в С++ (виртуальные функции, множественное наследование, деструкторы, ручное освобождение памяти)

Книга по С++ расчитана на новичков. Они не столкнутся со всем ужасом из-за которого С++ называют монстром. Но внесет некую пользу в общих образовательных целях

Мало кто из свитчеров пойдёт по настолько сложному пути.

Из альтернатив я мало что вижу, потому что у меня как-то само собой всё сложилось.

Сейчас есть куча платформ, где за 6-12 месяцев можно стать "разработчиком". Люди в итоге тратят много денег и времени на эти курсы. Хотя можно все необходимые знания для страта получить бесплатно. Возможно эта их пробелма, что они поддаются агресивной рекламе. Я решил не проходить мимо и предложить иной путь. Возможно он займет болше времени и сил, но он гораздо раньше даст понять, что получится освоить специальность или нет. На курсах ведь многое в лабораторных условиях, чтобы как можно дольше удерживать людей и выкачать как можно больше денег из них.

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

Думал насчет Pascal, но решил что уже не стоит. В 7 (2010 год) классе нам уже преподавали на C++. Мы не использовали классы, namespaces, а для ввода/вывода использовали cin/cout, что в принципе выглядит почти как Си. Решил, что тогда лучше сразу с Си начинать. К тому уже был знаком с книгой Прата и был уверен в том, что рекомендовать.

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

Буду рад услышать ваше мнение

Для архитектуры ЭВМ как минимум я рекомендую лишь одну книгу. Как писал автор книги, он старался сделать материал максимально доступным, чтобы его могла понять домохозяйка

Более глубокое погружение все-таки по желанию

это ложный тезис. В частности, если речь идет про современный С. Я могу
привести много аргументов. Например, тот же UB. Ты такой думаешь, что Си
транслируется один-в-один эквивалентный ассемблерный код, а фиг там
был. Размер типов C - это тоже песня. Оптимизирующий компилятор, который
в результате может доказать, что черное это белое, а белое это
черное... ох ты ж мать... Короче, если нас волнуют алгоритмы - Си нафиг.
Тот же пайтон прекрасно вывозит. И прекрасно на нем тоже покажете в чем
разница разных алгоритмов с разной сложностью (о большое). Дальше - кто
захочет - тот пойдет в дебри.

Ну при изучении основ программирования на Си наверное никто не использует оптимизации компилятора. Хотя в книге есть примеры того, как компилятор может оптимизировать код. И даже есть некоторые примеры того, как сказать компилятору, чтобы он этого не делал, например пометить переменную как volatile.

я думаю, что (повторюсь), что С++ может быть хорошим выбором, когда ты
уже профессионал и такой смотришь - что бы еще изучить. Отчасти это
подтверждается комментариями ниже. Как минимум я могу сказать одно -
тот, кто думает, что знает С++, скорее всего его не знает вообще. @0xd34df00d
подтвердит. К тому же, правильный ООП - это не то, что в С++, а скорее
то, что в SmallTalk. Но вот почему-то этот язык вообще не изучают нигде
(развожу руками)

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

Да, но не совсем. У студента есть важный недостаток — хороших на всех не
хватит, а плохие, те что без стажировок или / и после
крудоформозаборостроительного не факт, что лучше.

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

Я не уверен, насчет связей в средненьких вузах. Насчёт хороших — уверен
(и проверял), и было бы наверное круто перед вхождением в IT закончить
хотя бы пару курсов Физтеха / МГУ / ВШЭ. Стенфорд или Калтех было бы ещё
круто закончить. Шансов примерно столько же. У нас до середины третьего
курса никто не работал, и до поступления ещё год-два на подготовку
тратили. Это уже не подушка безопасности нужна, а целая спальня.

Связи имеют место быть везде. Никогда не знаешь, где пригодится знакомство.

Странный выбор даже в сравнии с Java. Особенно с учётом, того что
низкоуровневые концепции программирования к этому моменту, уже можно
было объяснить на примере чистого Си.

Мне просто очень понравилась подача материала из этой книги.

Бывает так, что после безуспешной попытки, идет успешная. Ваш отрицательный опыт c С++ мог помочь при изучении ООП на Java

во-первых IT это не только разработка

С этим я не спорю, поэтому в названии раздела есть упоминание, что это roadmap для разработчиков

Да, я предложил долгий и трудный путь. По времени он должен занять не много больше, чем какой-то разработчик_язык_программирования_курс. Много реальных результатов можно уже получить проходя курс CS50. Там очень интересные лабораторные и практические работы. Например: работа с изображениями, где нужно было применять алгоритмы фильтрации; или задание для работы с аудио дорожкой, где было необходимо с помощью кода изменить громкость. Также в курсе идет знакомство с Python + Flask, SQL, JS/HTML/CSS

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

увы, но нет. Когда мы изучаем Си, мы изучаем особенности Си, а не
особенности той платформы, на которой он работает. Просто если уж так
рассуждать - надо ассемблер брать :-)

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

С++ - худший язык, на котором стоит изучать ООП.

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

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

Я бы очень хотел пункт про архитектуру ЭВМ вынести в самое начало, но посчитал, что это может лишь оттолкнуть. Ну Си это не прям таки середина, я выбрал его как низ откуда можно начать. Он все таки ближе к железу. Про регистры, кэши, выравнивание в памяти в книги есть упоминание, но согласен, что без знания архитектуры ЭВМ это может быть трудно понять. Но можно оттолкнуться от образовательной программы, где сперва идет Си, а потом архитектура ЭВМ. Первокурсники справляются. Поэтому почему нет?

При изучении Си приходит гораздо больше понимания того как всё устроено, чем при Python. После Си очень легко изучать все остальные языки. Поработать с Си строками и указателями must have :)

С++ здесь исключительно для изучения ООП. В нем можно познать проблемы множественного наследования, понять что такое виртуальная функция, деструкторы. Например в Java нет множественного наследования, все методы по умолчанию виртуальные, деструкторов нет

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

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

Оставлю это здесь https://habr.com/ru/sandbox/163283/. За 10 месяцев бесплатно можно больше изучить и понять - потянешь ли ты IT.

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


Синтаксический сахар и динамическая типизация вредны во время изучения основ программирования т.к. многое остается нераскрытым


Понять принцип работы цикла на языке Си будет гораздо проще, чем на Python


Python — можно сказать, что делай вот это для каждого x из list, но понять как это происходит трудно, потому что не видишь, что под капотом


for x in list:
  print(x)

C — здесь четко можно пройтись по каждому шагу.


  1. Объявили счетчик для цикла
  2. Проверили условие
  3. Выполнили тело цикла
  4. Увеличили счетчик
  5. Проверили условие.

Алгоритм можно расписать на бумаге. Так подробно на Python будет трудно объяснить


for (int i = 0; i < list_size; i++)
{
   printf("%i\n", list[i]);
}

Также стало интересно чем измеряется низкий порог входа? В названии первого пункта делается на этом упор, но не объясняется как и почему Python имеет более низкий порог входа чем Pascal или Basic


Теперь про легкость языка и порог входа расскажу со своей колокольни
На своем опыте скажу, что начиная с 7 класса мы учили C++. Но в начале нам не давали знать о таких вещах как указатели, ссылки, классы и тд. Можно сказать, что писали на Си, только для ввода-вывода использовали cin/cout. Нам просто показали как вводить с консоли данные и как выводить их туда. И могу сказать, что сложность въезжания в программирования не была высокой

Многие кто решили перейти в IT должны учитывать, что помимо конкуренции с такими же людьми, кто решил сменил сферу деятельности, они конкурируют с выпускниками ВУЗов (которые каждый год идут искать место работы)

К тому же сейчас многие IT-компании принимают участие в образовательных программах, и многие студенты обзаводятся связями, которые дадут им преимущество при устройстве на работу. Многие студенты уже после второго курса попадают летом на стажировку в IT-компании с последующим трудоустройством
А есть где-нибудь рейтинг с графиками по области пременения? Ну например, Android — Java/Kotlin/JS(React)/Dart(Flutter), iOS — Swift/Objective C/(React)/Dart(Flutter), back — Go/Java/C#, sys C/C++/Rust, Web — JS/Dart/WebAssembly?
Ну Nvidia «запрещает» майнить на картах

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

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

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

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

почему бы автопроизводителю не запретить тогда использовать купленную машину как такси или жилье? Могут аргументировать тем, что например из-за того, что эта машина S класса и это(использование в качестве такси) будет плохим имиджем из-за чего другие богатые люди не будут покупать эту машину

Когда оказывается, что Smart ездит по лесам и полям хуже, чем полноприводный внедорожник, то это тоже виноват производитель смартов, который решает что на них делать и как?

Тут внедорожнику запрещают ездить по дорогам(хотя он может)
хм, вроде бы писал ответ для habr.com/ru/post/518372/#comment_22531950, а в итоге в главную ветку ушло

p.s.
оставляю этот коммент, чтобы был ясен полный контекст
Говорилось про проблемы с таймаутами при вводе/выводе — оптимизация ввода/вывода никак не должна здесь учитываться, люди пришли не за этим

И это абсолютно нормально

это не нормально, человек заплатил деньги не за олимпиадную систему(кому надо сидит на codeforces), а за практикум по алгоритмам, где ему помогут понять основные алгоритмы и структуры данных. Как проводить анализ алгоритма, что такое big O и т.п.
транспорт

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

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

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

Information

Rating
Does not participate
Registered
Activity