ping написав:а це дійсно треба? Вам не здається, що ці речі все рідше і рідше треба знати і розуміти для всього спектру програмістських робіт?
навіть звичайний перехід до масового застосувпання ООП призвів до факту, що ми користуємося класами і їх властивостями не знаючи "що під капотом"
і не можемо знати - бо фізично не вистачить часу вивчити будову всіх бібліотек, якими користуємося.
а колись давно-давно вважалося необхідним для якісного програмування на PL/1 володіти основами асебмлера
звісно , залишається сфера, де описані Вами речі важливо знати і розуміти.
але на мою думку, сфера, де це непотрібно - скажімо машинне навчання чи обробка терабайтів інформації - розвивається швидше
Я вважаю, що треба. Звісно, я не підтримую такі висловлювання: "Не знаючи таких мов, як С/C++ - ти не програміст", тощо. Якщо, людина файно знає одну мову програмування (будь-яку) і дійсно вирішує поставлені перед собою задачі, то це є СПЕЦІАЛІСТ, крапка.
Проте, якщо людина каже:
alissa shu написав:Яку мову програмування краще вибрати за першу? Але все ж з якої почати?
Я двома руками, за дані мови (С/С++). Для прикладу, візьмемо саму популярну (одну з самих популярних) книг по Java - "Философия Java" (Брюс Эккель). Новачок в програмуванні прочитавши її зможе написати набагато більше ніж "Hello, world!". Проте на кожній "п'ятій" сторінці, йде порівняння з С++. І дуже, добре, коли людина хоч би знає основи даної мови. Оскільки порівнювати, щось з не знайомим, м'яко кажучи важко. Я читав цю книгу до С/C++ та після. Як на мене - дві великі різниці.
Або, візьмемо іншу мову та книгу "PHP 7. В подлиннике" (Игорь Симдянов, Дмитрий Котеров). Перший розділ книги майже нічого не розповідає про PHP. Йдуть легкі приклади написання CGI на С. І не знаю, як іншим, але мені це подобається, бо хочеться, хоч приблизно розуміти, що відбувається за кулісами.
Ось всі сперечаються, яку мову програмування краще, щоб вивчали у школі. Як на мене, не має різниці. Головне, щоб учні хоч приблизно уявляли, що таке ПК, та що таке мова програмування. І ось для цього, я б рекомендував читати дуже цікаву та "легку" книгу: "Код. Тайный язык информатики" (Чарльз Петцольд). Дана книга читається, як художня, інша справа, що людина, хоч приблизно почне розуміти, "а що ж там всередині".
...призвів до факту, що ми користуємося класами і їх властивостями не знаючи "що під капотом"...
Знову С++ vs Java. В Java всі методи є віртуальні (майже, всі ). Але це мені нічого особливо не говорить, коли мої очі пробігаються по даних словах у книзі. Інша справа, коли, я хоч трошки писав коду на C++ і розумію, що таке віртуальний метод, а що ні.
Ще один приклад: "що під капотом"(C#) - ADO.NET vs Entity Framework. Багато людей, з якими довелося поспілкуватися, просто в екстазі розповідають, що Entity Framework - "це наше всьо". А висловлювання: "Можна й SQL не вчити, Entity Framework - все вирішить", просто валять на повал. Я не сперечаюсь, що Entity Framework, файна обгортка для ADO.NET + дозволяє набагато швидше написати код, який зможе показувати результат. Але потрібно не забувати (а деяким особам взагалі хоч почитати, що є таке) - ПРОФАЙЛЕР. Бо Entity намутить такі тіті, що аж страшно стає, коли подивишся профайлером на згенерований SQL запит. Звісно, якщо в людини є великий досвід вона набагато краще буде орієнтуватися, як "вірно" скористатися Entity Frameworkом, проте хоч би на початку потрібно дивитися за куліси.
Приклад (Java) ArrayList vs LinkedList. Звичайно, можна в пам'яті собі занотувати:
"ArrayList - швидкий доступ до елементів, LinkedList - швидке видалення та вставка елементів." Але ж завчити то не зрозуміти. Чому ж так? А треба руцями написати та попрацювати на С++ з динамічним масивом та двобічно зв'язаним списком і тоді розуміння прийде, чому там швидкий доступ до елементів, а там швидке вставляння та видалення тих елементів.
І таких прикладів, я думаю, навести можна ще багацько.
P.S. Ще один плюс "в першій мові" - C/C++. Багато юних ХАКЕРІВ та розробників МАСШТАБНИХ КОМП'ЮТЕРНИХ ІГОР - відсіються. Бо дуже часто люди надивившись фільмів та наслухавшись цікавих розповідей, думають, що програмування це нічого не роблення, а просто тицяння по клавіатурі, яке дає моментальний результат.
P.P.S.
ping написав:...бо фізично не вистачить часу вивчити будову всіх бібліотек, якими користуємося...
Тут,я з Вами погоджуюсь. Я б на перше місце поставив би Front-end. Нажаль не пам'ятаю, де, читав веселу та довгу статтю. Псевдо розмова двох програмістів. І ось один начебто з великим досвідом приходить на проект, а виявляється, що за рік все що він знав то старе, і потрібно підівчити і ось це, і ось це, і ось.....