Я заплутався і не знаю, що мені далі робити. Поради студенту

Усім привіт!

Я студент першого курсу, навчаюся на кафедрі «Інженерія програмного забезпечення», тобто, коротко кажучи «Вчуся на програміста». З самого початку навчання я вважав, що якщо просто вивчати що є в програмі універу, то «можна стати крутитим спеціалістом», ну типічний студент першого курсу у рожевих очках. Зараз же пройшовши через повне лайно, я пізнав реалі, що не все так, як я собі думав.

Місяці три назад, ще до початку зимової сесії, я зрозумів, що те що мені дають в універі не задовільняють моїм бажанням, в плані в мене була якась недостача інформації, мені хотілося більше і більше. До речі, 90% знань я здобув самотужки. Хоча зараз один з найкращих у своєї групи по рейтингу. Але я не хочу сказати, що мій університет поганий, то погане взагалі вища освіта))) То я вирішив, що крім інформації з навчального закладу, отримувати інформацію ще звідкись.

Тричі я пробував вивчати основи С++ самостійно, і кожного разу, все йшло через одне місце. Кожного разу я змінював тактики свого саморозвитку, експериментував так сказати. І на четвертий раз дійшов до ідеальної для мене схеми навчання. Суть її у тому, що спочатку читаю Стівена Прата «Мова програмування C++», далі дивлюся уроки на ютубі по цієї теми, далі практикую написання коду з цієї теми для того, щоб повністю розібратися з концепцією теми та запам’ятати синтаксис і структуру.

Нині я вивчив основи мови на 60-70%, легко пишу якісь задачки чисто на знання синтаксису, і випадково натрапив на такий проєкт як LeetCode. І вот... ми прийшли до головного. Я не можу вирішити навіть легкі задачки. Просто не розумію, що, як, і куди. Вирішив звернутися до знайомих які більше розуміють за мене у програмуванні. Вони рекомендують почати вивчати «Алгоритми та структури даних» і поступово повернутися на LC. Але після цього в моїй голові каша. Купа питань, і не розуміння, як правильно зробити.

Є такі теми в яких я, мабуть, повинен розібратися.

  1. Основи С++(треба довчити)
  2. ООП
  3. Шаблони STL
  4. Алгоритми та структури данних

Що мені з цього в першу чергу потрібно вивчити? Довчити С++ і паралельно розбиратися з алгоритмами? Чи закінчити з одним і перейти на інший пункт? Якщо поступово, то у якому порядку і потрібно мені усі ці 4 пункти? Чи можна щось тимчасово виключити зі списку, щоб прийти до своєї поки головної мети? Коли почати шукати роботу чи місце для нормального стажування? І що я роблю не так?

P.S не засуджуйте мене, будь ласка, я багато чого не розумію і скоріше за все зробив щось не так. Але тому я тут, щоб розплутати цей загадковий клубок з ниток. Одразу виражаю усім відповівшим велику подяку!

👍ПодобаєтьсяСподобалось5
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Coursera зараз надає безкоштовний доступ до курсів для студентів з України. Якщо в тебе є пошта в домені університету — то має працювати.
Також можеш поцікавитися, чи є у вас група, яка займається олімпіадним програмуванням, там теж можна добре вивчити базові алгоритми.
І головне не слухай людей, які будуть говорити, що алгоритми програмістам не потрібні.

Ну як варіант для швидкого старту без досвіду програмування та знання мов, можна стати розробником нового покоління youtu.be/3XH58I1Aakg

Автор мододець, все робить правильно насправді. Декілька порад

1) Виріши чи продовжувати вчити С++, чи щось більш мейнстрімне
Якщо хочешь працювати в сфері геймдев, алготрейдінг, ембеддед чи Computer Vision, то продовжуй вчити плюси і технології повязані з областю, яка тебе цікавить, і не слухай тих, хто каже що це не кращий варіант. Подивись ваканії, що тебе цікавить, на що є попит.

2) Якщо виріриш переключитись на більш мейнстрімну мову, то C#, Python, JS + TS + NodeJs теж хороші варіанти з великим попитом ринці. Це більш простий шлях через те що більше вакансій, в основному кровавий ентерпрайз і веб дев)

В будь якому випадку краще спочатку вибрати щось одне і не стрибати з однієї мови\платформи на іншу.

Я б вчив в такому порядку

1. Вчити обрану мову, взяти якусь одну хорошу книжку за основу + youtube, udemy, etc. як доповнення. ООП обов’язково.
2. Якщо вчиш Java, C#, C++, то паттерни проектування обов’язково
3. Технології повязані з областю, яка тебе цікавить. Це може бути фреймворк для створення UI чи OpenGL для графіки, чи фреймворк для бек енд розробки
4. Алгоритми та структури данних — обов’язково. Сама по собі це велика тема, але знати що таке linked list, tree, hash table, stack, queue, binary search треба хоча б для проходження інтерв’ю. Скоріше всього у вас в універі буде курс по алгоритмам, можешь паралельно з ним самостійно прокачатись по цій темі. Рекомендую курс Седжвіка на Coursera і його книгу.
5. Бази даних. В першу чергу SQL, але ознайомитись з NoSQL типу MongoDB теж буде плюсом.

Ну і починаючи з першого пункту рекомендую практикуватись, писати свої пет проекти. Можна почати з чогось простого типу консольної гри чи консольної утіліти.

Літкод і алгоритмічні задачі — це добре, а на нашому ринці в основному на інтервью складних алгоритмічних завдать не дають. Рекомендую до них переходити коли пройдеш курс хоча б по основам алгорітмів і структур даних.

Ну і на курсі 3-4 можеш починати шукати роботу. Як готуватись до інтерв’ю і його проходити — це вже окрема тема.

Однин з найкращих коментарів, де чітко написано відповіді на мої питання. Дякую Вам!!!

Просто літкод на першому курсі і без реального досвіду — це ще рано. Все одно, якби студент-медик на першому курсі взявся самостійно оперувати.
Є купа сервісів подібних літкоду, але з простішими задачами. От з них і потрібно починати.

Не бачу відповіді на головне запитання, яким программістом ти плануєшь працювати? Чому С++? Який ринок праці для нього? Спробуй знайти вакансії та перевір які зарплатні

Студент
Той що навчається сам
От і навчайся

Фундаментальні знання мають йти перед конкретними технологіями.

На Prometheus є чудовий фундаментальний курс CS50: courses.prometheus.org.ua/...​etheus CS50 2019_T1/about

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

Мова — це дуже вторинна штука. Головне — розуміти загалом кібернетику, комбінаторику, алгоритми, теорію вірогідності, дискретну математику, методи оптимізації, тощо.

Хто виграє у гонці, на цій конкрентій машині?

Другий звичайно.

Це все вірно, якщо ми розмовляємо про кодера, яких повинні вчити у технікумі. В універі повинні готувати інженерів — у цьому вся різниця

На чсв у кодерків? Звичайно.
П.С. подумайте у вільний час чому маанги, та й інші західні контори, шукають не кодерів на конкретний фреймворк, а просто Software Engineer, і питають задачі з умовного літкоду без прив‘язки до мови, а не про деталі конкретних фреймворків 🤔

мова це про ЯК сказати
а фундаментальні знання про — ЩО сказати

звісно, нобелевський лауреат з чого завгодно повний нуб коли його попросять поділитися своїми знаннями на мові індіанців навахо. Бо він її не знає.

Якщо мова це вторинно, тоді чому хороших розробників на c++ чи scala днем з вогнем шукають, а js по 200 на одну вакансію?

тут проста помилка, у підміні понять.
хороший розробник це той хто знає багато про ЩО насамперед.
а мову JS легко вивчити, тому й багато кандидатів, які насправді і пристойної компоненти на React не напишуть.

хороший розробник на C++ насамперед знає багато про фундаментальне, загальне.
Ну а Scala — просто нецікава для більшості, немає стимулу на неї переходити, тому її не вчать.

Я переконаний, що знання інструментів в реальному житті перемагає знання абстрактної теорії.

Залежить від тлумачення терміну «абстрактна теорія».

Щоб знати як працює LinkedList тобі не треба вивчити всі структури данних. Щоб знати, як працює хеш функція тобі не треба вивчити матан.

ну так.
Щоб писати на С++ — теж не треба знати його весь.
Як сам автор STL, Стєпанов, і казав щось тіпа — дай боже щоб я знав половину специфікації С++

Але 90% робочого часу, розробник повинен розробляти.

тільки ще є параметр — продуктивність.

платять не за «розробляти», а за закриті таскі.

Джунів би на вас повісити — швидко б зрозуміли.

Тобто правивльно я розумію, що якщо я перейду на python, то і конкурентність і складність при наймі буде більше ніж на той самий С++?

Тобто правивльно я розумію, що якщо я перейду на python

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

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

дякую, саме це я і хотів почути

головне — не нервуйтеся — очікування і реальність — не сходяться у більшості студентів перших курсів. це — нормально, робити такі помилки про свою освіту.
головне — вчасно перевірити свої уявлення, зробити висновкі, та змінити собі «програму навчання» :)

Мені видалися цікавими пояснення J.Coplien про ООП. Він стверджує що сутнісні ідеї ООП не реалізовані в тому «ООП» котрий застосовується зараз в широкому загалі: www.youtube.com/watch?v=wbuXxB7j260

Це мабудь у всіх таке. Я б порадив знайти роботу, практикуватися на роботі. Робити тестове завдання при прийомі на роботі. А в універі ознайомитись з теорією. C++, pascal ну це порада 20 років тому назад можливо і була б сучасною. Але десь років 10 тому вже перейшли на python, php, js, ну хочаб c#, java

Я б порадив знайти роботу, практикуватися на роботі

Щоб знайти роботу треба вміти робити якусь роботу.
А автор топіка ще ніякої не вміє.

Навіть «джуни нікому не потрібні» років 5 вже точно. А по опису — рівень навіть не трейні

А в універі ознайомитись з теорією

Я програмував за гроші(копійки звісно) вже на 2ому курсі. на plain C.
Прийшов на 1ий — маючи тільки досвід програмування MK-52. Правда вище середнього — переписував-дописував-оптимізував ігри які друкувались тоді у журналах.
І мав ментора — сослуживця, який був на 4ому курсі тоді.
Теорію ж, основи CS, давали непогано вже на 1ому курсі КПІ, ФІОТ. І була тусовка — в группі були хлопці які вже вміли програмувати, хто на бейсіку на сінклері, хто на паскалі, бо батьки мали доступ до компів. тому було з ким спілкуватись по практичних питаннях. Тоді було два напрямки, в які грались студенти — напишу свій архиватор або антивірус!

Ну і з другого курсу ж, я вже робив курсачі з програмування для арабів з інших вузів. Для заробітку :)

якщо просто вивчати що є в програмі універу, то «можна стати крутитим спеціалістом»

Так не буває, незалежно від ВНЗ (що наші, що за кордоном).

Що мені з цього в першу чергу потрібно вивчити?

Ти не написав яка твоя ціль. Нема мети => не ясно що робити.

щоб прийти до своєї поки головної мети?

І яка ця мета?

Коли почати шукати роботу чи місце для нормального стажування?

Коли твої знання будуть на рівні джуна. Тобі до того ще далеко.

І що я роблю не так?

Все ти робиш добре, ти студент-очник (що зараз найбільш важливе), пробуєш різні штуки типу літкода, питаєшся в знайомих порад.

З порад,
— 1 вчися не по книжках чи ютуб відео а по курсах. Udemy, Coursera і т.п. Гугли {мова програмування} from zero to expert. По ціні від 15$, що навіть для студента не проблема.
Це дозволить отримувати повязані знання типу git, ide, та й навчальний процес буде краще організований.
— 2 Не зациклюйся на першій мові програмування. Чому C++ а не JavaScript/NodeJs/Python/Php?
Тобі головне навчитись пошвидше щось робити, хз наскільки це легко з С++.

Основи С++(треба довчити)

В мене після співбесід студентів такє давно народилося:
— Що вам викладали з мов програмування?
— С++!
— А ще що?
— Ну там... не пам’ятаю. С++ всі роки!
— Ех, зрозуміло... (програмувати не вміє ніяк, і нічого... ех)

С++ можна вчити першим за двух умов:
1. є круті преподи з CS
2. є команда, тусовка, ... — де є ті хто пише вже близько до професійного рівня(хоча б), і менторить — тобто постійно в спілкуванні, і яка щось пише. За гроші, чи так, свою мега-гру, немає різниці.

Інакше — нічому ви не навчитесь. Будете вміти менше чим phpшник який почав з клепання сайтів на Worpdpress, який і не вчився ні в якому університеті.

Показник ви самі назвали:
LeetCode. ... Я не можу вирішити навіть легкі задачки.

А для вирішення простих задач на LeetCode мова не важлива.

Шаблони STL

Викреслити зі списку разом з С++

ООП

Після того, як прості задачки на LeetCode не будуть викликати складнощів.
І тільки після того. Навіть якщо вчити Java.

Алгоритми та структури данних

О це — да. Оце й треба вчити разом з мовою. А якщо на вивчення мови витрачається більше часу аніж на алгоритми та структури данних — то нафік таку мову, або такє в неї заглиблення
І — виконувати вправи з ними.

Стара та нестаріюча книжка — Н. Вірт «Алгоритми + структури данних = программи».
І це працює — в незалежності від самої мови. Правило створення програм — на любій мові.
А знання мови — створювати програми не навчить ніяк.

Пояснюю на прикладі вивчення іноземної мови (якусь же вчили?)

Нікому на старті вивчення майже не допогло:
Вивчення купи слів, конструкцій часу, і т.д.

Утровано:
А допомогло — вивчив 100 слів — і вперед! дивись мультики для 4річних нейтівів, повторюй за ними, балакай з ціми мультяшами. (шікльна ж программа, всюди в світі так і створена — у підручнику для дітей — скільки всього слів?)
Далі — вивчив 300 слів — мультики для 6річних.
Далі — 1000 слів, плюс вже глибше оту граматику — мульти для десятирічних.

90% знань я здобув самотужки.

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

Підсумок: ваш перший крок повинен бути:

Відкладайте С++. Опануєте програмування як такє — років через 5 зможете повернутися до нього, як захочете :)

А з навчальних програм — шукайте курси про «100 слів»
Наприклад CS50 (Computer Science 50)
І бажано мовою оригіналу, хоча для зручності — підглядайте в переклад :)

Хочеш почати срач — скажи щось про мову програмування ;)))
Треба визначись із ціллю. Це може бути фріланс, стартап чи велика компанія
Відповідно до цього слід вибудовувати кар’єру — читай вимоги до посад, чи робіт і починати щось робити відповідно до зазначеного стеку.

Я не советую начинать изучение программирования с C++. Это сильно специфичный язык программирования; чтоб реально разобраться в нем (а не зазубрить что написано в книжке), нужно иметь хорошие знания и опыт в CS и разработке/поддержке ПО. Куча вещей недружественны к новичкам и заставляют изучать еще ворох левых инструментов для того, чтоб просто писать и компилировать свои программы.

Бери один из мейнстримовых популярных языков нового поколения, которые имеют современную экосистему и дружественны к начинающим. Например, Python, Javascript, Rust.

Можешь привести пример Easy литкод задачи которую не можешь решить?

Вообще-то, С++ появился раньше CS. И не такой уж он сложный, если на то пошло.

Each C++ expression (an operator with its operands, a literal, a variable name, etc.) is characterized by two independent properties: a type and a value category.

Primary categories
lvalue
prvalue
xvalue

Mixed categories
glvalue
rvalue

И не такой уж он сложный, если на то пошло.

ok

За эти несколько лет можно выучить несколько современных языков программирования вместо «60-70% основ С++»

Вітаю!

пройшовши через повне лайно, я пізнав реалі, що не все так, як я собі думав

Забігаючи наперед, такий самий стан Вас очікує на 1 та 2 місцях роботи, і це нормально. Бо зазвичай 1 місце роботи — це те, куди взяли. Друге — це те, яке вибрали. Різниця між ними колосальна.

90% знань я здобув самотужки

Тренуйте цей скілл, він буде основним на протязі всієї кар’єри програміста.

і кожного разу, все йшло через одне місце

Бо це не так працює. Ми як спеціалісти вчимося тільки тоді, коли вирішуємо конкретні, а не абстрактні, задачі. А все йде через одне місце тому, що Ваш мозок каже: «Друже, а чи не займаємось ми якоюсь фігнею, яка не має до реальних задач жодного відношення»?

Що мені з цього в першу чергу потрібно вивчити?

Як не парадоксально — нічого. Дивіться в сторону реальних задач, які потрібно вирішувати: це може бути пет-проект, участь у опен-сорсі тощо. І вже пляшіть від задачі та того, яких знать вона вимагає. Ви ж намагаєтесь поставити телегу попереду коня, і мозок закономірно каже Вам: «ТаНуНафіг».

Коли почати шукати роботу чи місце для нормального стажування?

Судячи з моєї практики, десь з 3 курсу вже можна починати, якщо гроші жмуть. Я б рекомендував з 4 курсу на фулл-тайм, попередньо домовившись з викладачами про складання іспитів і диплому.

UPD.

місце для нормального стажування

До речі, саме таким був мій шлях: піти після універу на копійчану ЗП у Головне Управління Статистики. Тоді там були або студенти, або пенсіонери (як зараз, не в курсі, але думаю є багацько державних/муніципальних компаній, куди можна піти на 1 роботу). Тож шукав стажування, знайшов першу роботу. Ну а далі через рік Ви вже зрозумієте, чи хочете бути програмістом взагалі. А цей перший рік-півтора можна визначати як інвестування у свою майбутню професію.

В універі викладачам головне прочитати матеріал, заповнити потрібні їм документи про проходження навчального процесу. Впихнути побільше всяких непрофільних предметів типу БЖД, культури, філософії, політології, психології і т.д. (в мене серед непрофільних була навіть «фізична та колоїдна хімія»). Безсумнівно, все це потрібно для загального розвитку, але принаймні зробили б вибір серед непрофільних предметів, ну й щоб підсумковий бал з непрофільних не впливав на поріг для отримання стипендії — але ж ні...

Плюс велике питання чи ті викладачі самі щось розуміють в профільному для вас предметі, може лише просто читають з застарілої методички.

Щось навчитися серед цієї каші — це особисто ваша проблема. Літкод заскладний? Пробуйте codewars, там задачки початкового рівня просто елементарний.

English, motherfucker. Do you speak it?
CS50
CS101
www.coursera.org/learn/algorithms-part1
also part 2
Мова не має мати значення, але плюси кидай.
Довчити плюси неможливо, лабай на пітоні, заодно зекономиш час на СТЛ. Для літкоду вистачить пари тижнів для базового синтаксису пітону і базових колекцій.

(Мій комент це не зовсім відповідь на ваші питання, а скоріше поради на перспективу)
Зазвичай, коли ви застрягаєте у якійсь ситуації і здається виходу немає — спробуйте ментально та емоційно трохи відсторонитися від неї, поглянути здалеку, проаналізувати стратегічно / у довгостроковій перспективі.

Щодо конкретно вашої ситуації, подумайте ось про що: ви скоріш за все плануєте побудувати кар’єру програміста, яка буде тривати від моменту закінчення універу і до виходу на пенсію.
Диплом бакалавра (4 роки навчання) ви отримаєте приблизно у 21-22 роки, а на пенсію люди зазвичай виходять після 60. Тобто навіть після років, проведених в універі, вас ще чекає 40+ років, за які ви пройдете шлях: інтерн —> джун —> мідл —> сеніор —> і т.д., причому до сеніора цілком реально дорости вже за перші 5 років кар’єри.

Що конкретно я хочу цим сказати:
1) Не треба поспішати. Якщо вам здається, що час швидко спливає і ви упускаєте щось важливе — це іллюзія. Найкращі ваші роки ще навіть не почалися, вони почнуться приблизно після 25-30, коли ви вже будете мідлом/сеніором.
2) Не треба зациклюватися лише на одній мові програмування і вивчати її до найглибших глибин. З вірогідністю, близькою до 100%, за описані вище 40+ років кар’єри ви ще багато разів зміните мову. Тому вивчайте лише те, що вам реально потрібно для виконання завдань — це стосується як навчання, так і роботи. Навіть найбільші гуру з 20-30+ роками досвіду не знають усього.
3) Приготуйтеся до того, що на багатьох реальних проєктах ви будете умовно кажучи «перекладати JSONи» (брати на вході один об’єкт, робити певні маніпуляції з даними у його полях і передавати далі за ланцюжком логіки програми) та робити інші речі, які не потребують особливо глибокого знання складних алгоритмів. Академічне програмування і комерційне/промислове — це доволі різні речі. У більшість робочих днів року робота програміста зводиться до простого «get shit done ASAP» (ASAP — as soon as possible), про яке просить бізнес, задачі якого ви виконуєте.

Зі статті не дуже зрозуміло що саме ви вже знаєте і вмієте, а що ні. Програмування та алгоритми, зазвичай, вивчають починаючи з примітивних «виконавців», типу «робот-кресельник», на яких вивчають базові примітиви: послідовність команд, умовний перехід, цикл тощо. Далі, навчившись працювати з абстракціями, переходять до більш узагальнених понять про масиви, списки, дерева, та роботу з ними. До цього моменту, навіть мова програмування не потрібна :)
Якщо у вишу викладають С++, то доведеться мати справу з ним. Головне, не забивайте собі мізки всілякими складними конструкціями та іншим, бо на даному етапі ви все ще будете мати справу лише із примітивними алгоритмами та структурами даних. Базові задачі на перших курсах з програмування — це операції зі строками, масивами, максимум — матрицями. Щось накшталт гістограм, графіків, числових методів — це вже старші курси.
У випадку, якщо ви все це вже вмієте та розумієте як працюють прості алгоритми, що таке рекурсія, що таке змінна і чим значення відрізняється від вказівника, то можете переходити до більш складних тем. Не хочу розписувати, бо вже багато написали нижче.
Про роботу важко сказати, але тут точно питання не в літкоді, а у розумінні того, що взагалі потрібно від вас, як від робітника, і чи ви знаєте як це робити, чи хоча б з якої сторони до того підходити.

Відповіді:
1. Паралельно не треба, в принципі нічого робити.
2. Можно робити по твоєму списку.
Але треба додавати підпункти та дату, коли ти плануєш це закінчити.
3. Роботу вже треба шукати. Це навичка яку треба прокачувати.
4. Від інституту ти отримаєш коло спілкування та диплом. Це все.
5. Ти ще не проходив через повне лайно

Дякую за відповідь, особливо обнадіює 5 пункт))

Та то таке, вивчатимете на Теорії ймовірностей

ну раз людина сама прийшла за порадою: почни розв’язувати прикладні задачі.

1. можна гратися з математикою — напиши програми для вирішення задач лінійною алгебри та/або дискретної математики — матриці, графи, тощо.
1.1 задача із зірочкою — напиши програму створення розкладу для свого факультету/кафедри.
2. почни писати велосипед якийсь:
— простий http server наприклад, тільки з рівня сокета
— кастомний smart home якийсь з ардуінками та датчиками
3. копай горизонтально — робота з базами (sql/nosql), message brokers (kafka and etc), webservers
4. щоб можна було щось показати друзям
— програмування під android
— сайтец на nextjs

ну і забудь про C++, там ти витрачаєш час на мову, а не програмування.

Вивчай «нормальну»:
1. java/kotlin — я прихильник типізованих
2. typescript/js
3. go
4. python

C# не в цьому списку, писав на всіх, він самий відстійний імхо

дякую за відповідь, честно говорячи, багато хто і тут і просто радять взяти інший менш тернистий шлях і мову. Але тепер виникає питання. Якщо я виберу новий шлях, наприклад Python, паралельно в мене зараз С++ йде предмет і я буду вчити і python і хоча би мінімально підтримувати с++ для сдачі сессії, каші в голові не буде? P.S Кидати універ не варіант))

не буде

для порівняння: якщо тобі скажуть перекласти «Слава Україні» на англійську, це змінить суть? З програмуванням так само: пишеш іншою мовою, але зміст залишається тей самий. Треба навчитись «говорити» на одній мові цілеспрямовано, навчитись «говорити» конструктами, з вживанням класів, сервісів і т.д. Після цього треба буде лише перекладати. Береш словник (документацію), формуєш те що хочеш сказати своєю мовою і перекладаєш. З часом робиш без словника. Потім робиш без проміжного кроку у вигляді «формування своєю мовою» і одразу формуєш потрібні конструкти так як тобі треба.

якщо порівнювати пітон і с++ то так, таке може спрацювати, хоча і не завжди. але є мови з якими так просто не вийде. наприклад в erlang усі змінні константи і не має операторів циклу і переходу. як зробити ітерацію? про монадичний комбінатор нерухомої точки в хаскелі годі і згадувати. туди ж лісповий call-cc

та тут і не рекомендують щось екзотичного

не треба кидати універ!
той C++ може закінчитись на 2 курсі в універі. у буде нова мова на кожному предметі.

для себе обери те що подобається. вчи с++ для лаб в універі, а там де можна обирати мову — обирай ту що вчиш сам.
знову, дуже близько та схожий синтаксис на с++ це його похідні мови — java, наприклад. typescript, go

python — то не дуже схоже на С++

Шукати шляхи виїхати за кордон.

мені 18, виїхати під час воєнного стану не маю змоги

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

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

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

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

не впевнений, що починати з с++ гарна ідея. особисто я починав з паскаля ще у школі, тоді перших курсах універу вивчав С, а десь з 3го курсу купив книжку по С++ і читаючи її думав яка класна штука деструктор.
ООП гарна штука, але переоцінена. це просто трюк щоб локалізувати використання глобальних змінних у функціях.
«Шаблони STL» це і є «Алгоритми та структури даних». для 90% задач нічого крім вектора, списку, простого дерева і асоціативної таблиці не треба. більш складні структури даних найчастіше зустрічаються в базах даних. а сам по собі stl складний тому що це комбінація шаблонів і структур даних. шаблони — це не с++, це такий собі мета-с++, який компілюється в звичайний с++.
ну короче, не хочу тебе демотивувати, але я не думаю що ти пізнав 60-70% с++. щоб це відбулося потрібно, щоб концепції стали частиною твого світогляду. вивчити синтаксис можна за 21 день, але зрозуміти нащо і для чого воно є, потрібні роки. так само я і монада в хаскелі — прочитати що таке монада можна за 15 хвилин. а осягнути що ж воно таке є — місяці (принаймні мені знадобилося місяців три, що б ото все переварити в голові)

дякую за відповідь. А щодо «демотивувати», то навпаки, поки очі не відкриють — правди не дізнаєшся, а тим паче я мав на увазі 60-70% основного синтаксису, знати все просто не можливо, ти паче за 6 місяців вивчання мови. А так я з вами повністю згоден!

Все ок, так у всіх
Перший курс він завжди такий

Перше що потрібно це road map. Тобто треба зрозуміти весь шлях. Починати розуміння треба з кінця, тобто з цілі. Далі треба знайти перший крок. І все головне, його зробити.
Часто хтось може допомогти в цьому, зазвичай це ментор.

Це якщо загально. Якщо конкретно, то с++ дуже погано підходить як перша мова програмування, тому що там кожну дію можна робити 3ьома різними способами, а стандарт виробився що треба лише одним. То навіщо починати з того, що вчиш в 3 рази більше? Знайти правильний шлях в рази складніше.

Я б рекомендував починати самонавчання з c#, як простішої мови і повертатись до c++ коли є розуміння основ. Навчитись простим алгоритмам, написати їх на обраній мові, перейти до класів і лише після цього хапатись за... ні, є ще 4 кроки перш ніж хапатись за літкод.

є вибір:
1) піти на роботу паралельно навчанню
2) піти на роботу після навчання
3) стажування в топ компаніях світу

Літкод треба лише для останнього

Та усе нормально ! Як це не дивно — завдання вищої освіти справді полягає в тому щоб навчити людину самостійно вчитись. Це можна справді зрозуміти тільки років так через 10 по закінченні самого універу. Більшості студентів першого курсу далеко не до того усього. Щодо алгоритмів і структур даних, як я пам’ятаю це починається із другого курсу. Справа в тому, що щоб вирішувати задачі з алгоритмів потрібна теоретична підготовка — а також практичні навички, того самого базового програмування — встановити, компілювати, дебажити і т.п.. Якщо у вас вже нема проблем із написанням базових прикладних програм на С++ (у чому особисто я дуже сумніваюсь, на справді освоєння С++ до середнього рівня йде не меньше 2 років) то можна переходити до теоретичних основ. Щонайкраще — писати прості прикладні програми, щось по типу найпростіших казуальних ігор — брейкаут, тетріс і т.п., вьюверів таблиць в текстовому режимі, утиліт типу Greep, find і т.п. Як цитувати Бъерна Страуструпа — «Щоб навчитись програмувати — треба програмувати». Знайдіть книги де описуються такі програми та як їх писати. Скажімо роботи Герберта Шилдта. Потім можна переходити вже і до складніших алгоритмів перевитрати Дональда Кнута чи якусь подібну літературу із алгоритмів та структур данних. Коротше кажучи — вперед до висот. P.S. Як вже йде другий семестр — пропоную запрограмувати гру Калах, благо зараз її алгоритм можна дуже легко знайти в мережі (без похода в бібліотеку і переписування книжки в читальному залі в конспект).

Дякую, гарна порада! Прислухаюсь до Вас

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

Так, Ви праві, з попередніх порад і Вашої, я зрозумів, що не треба спішити,з часом само собою усе уляжеться. Дякую за пораду!

Коли я вчився на факультеті Комп’ютерних Наук у мене були схожі питання. І тут проблема не в студентах (які не можуть осилити якусь заумь), і не в програмі універу (вона як раз вчить саме «Комп’ютерним наукам», а не програмуванню). На мій погляд головна проблема це відсутність досвіду та практики!
Щоб було зрозуміло — візьмемо щось, близьке багатьом — математику. Ії вивчають у школі, вивчають у ВУЗі, тому що вона — головний інструмент інженера і вченого. Але навіть ті, хто здавали математику на відмінно і кому подобалися задачі — дуже рідко використовували її після ВУЗа.
Чому? Тому що математика «відірвалася» від практики і стала свого роду карго-культом. Ті, хто відкривав математичні формули, робили це тому, що їм було потрібно вирішувати цілком практичні, технічні задачі! Систему рівнянь вони складали аби, наприклад, порахувати якої форми має бути колонна у будинку, чи розміри шестерень коробки передач для авто.
А учням дають систему рівнянь, вчать її вирішувати, але не розповідають навіщо!
Пам’ятаєте що таке карго-культ? Це будувати «радіо-вежі» с очерету і намагатися викликати літаки з провіантом через дерев’яний мікрофон та навушники.
Те саме з алгоритмами і литкодом. Можна вивчити теорію і навчитися вирішувати ці задачки. Але у реальній роботі це не допоможе. Бо втрачена прив’язка до реальної, практичної задачі яку усе це має вирішувати.
Що з цим робити? Я бачу два шляхи:
1) Обрати для себе шлях науковця. Навчитися мислити абстрактними моделями. Бо усі складні теорії (алгоритми, прикладна математика) націлена на вирішення задач «взагалі». Тобто не як оптимально розвезти піцу по 10 адресам, а щось типу «вирішення логістичної задачі на двомірному графі з вагою ребер». Цим шляхом ви можете стати людиною, яка вигадує алгоритми!
2) Починати як девелопер і НЕ іти до ВУЗу доки не відчуєте потреби вирішувати більш складні задачі, ніж формошльопство. Якщо ніколи не писав проєкт з тисячами класів — дуже важко усвідомити користь ООП та патернів. Коли виникає потреба обробляти відео, звук — тут доведеться занирнути у математику та матриці. Можливо доведеться писати програми для роботів — а там ще і физика потрібна.
Отже Компьютерні Науки (включаючи алгоритми, прикладну математику, теорію ШІ, дата саінс і т.і.) корисні девелоперу, який вже має 3-5 років досвіду і рівень синьора. Вивчати їх у ВУЗі заздалегідь — це як спочатку прочитати книги про устрій та ремонт автомобіля, але реальний автомобіль побачити тільки потім.

вчився на факультеті Комп’ютерних Наук

А надо было идти на Мехмат

Мои советы:
1. не начинай с С++, это очень большой (много фич) и сложный язык. Начни с того же С.
2. Набраться терпения. То что ты не можешь решить литкод проучившись всего полгода это нормально. Половина моих коллег с десятилетним опытом их тоже не решит.

Коли почати шукати роботу чи місце для нормального стажування? І що я роблю не так?

Не раньше 5-го курса. На работу успеешь. Ничего особо нового тебя там не научат. Все есть в книгах. Лучше читай: книги по сетям (Олифер), операционным системам (Танэнбаум) и так далее...

Нині я вивчив основи мови на 60-70%

Это тебе так лишь кажется. Ты не выучил еще даже 6% C++.

С какой целью? Чтобы ковырять лапшу и стать королем Спринга или ЕЖБ? Лучше это время потратить на изучение чего-то полезного.

Не все. Но время учиться у него сейчас есть, а с работой его станет в разы меньше. Да и желания и сил меньше. Всему свое время.

Не раньше 5-го курса. На работу успеешь. Ничего особо нового тебя там не научат.

Зачем терять 5 лет? Лучше идти работать с 1ого курса.

та нормальна в університетах програма на інженерії пз, просто не треба перескакувати з одного на інше, а йти по ній крок за кроком і на третьому році невідомі пазли складуться в цілісну картину в голові

Так, можливо, Ви праві. Просто треба час, дякую Вам!

Я не можу вирішити навіть легкі задачки

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

Дякую за відповідь! Прислухаюся до Вашої рекомендації.

Місяці три назад, ще до початку зимової сесії, я зрозумів, що те що мені дають в універі не задовільняють моїм бажанням

Так на першому курсі вичитують загалні предмети. Не треба будувати свої враження по першому курсу. Ну а так да, треба самому вчитися.

Наразі можу сказати, що вже з першого курсу вивчається профільні предмети. В нас зараз це С++, Алгортми та структури данних, Комп’ютерна графіка та обробка зображень. Але якщо говорити про якість того що нам дають...

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

Як на мене на початку ділення скоріше на мову та алгоритми. Потім трішки архітектура та специфічні доменні знання з’являються.

Загугліть SFML, напишіть на ньому змійку або тетріс.
Літкод для абсолютних початківців дійсно складний, навіть easy level. Простіше — є eolymp.
Якщо шо — я менторю С++, якраз по таких питаннях, можете у особисті написати.

Дякую за відповідь. Якщо з‘являться питання напишу Вам!

Тричі я пробував вивчати основи С++ самостійно, і кожного разу, все йшло через одне місце.

Я пропустив цей момент. А навіщо вам це лайно? По програмі вимагають?

Це основний предмет. Плюс бажання вже розвинутися у якомусь напрямку, а не скакати з одного в інший.

Основи, алгоритми, ооп та stl.
Паралельно читайте чужий код.

Плюси тяжка штука, але вона себе виправдовує, якщо дорогу подужаєте.

Дякую за відповідь! Прислухаюся до Вашої рекомендації.

Мозок вибухає то робіть перерву.

Коли свої проєкти вдається продавати власнику фірми то краще продовжуйте та беріть складніші проєкти.

Дякую за відповідь! Прислухаюся до Вашої рекомендації.

Підписатись на коментарі