Для мене я людина C # та Java. Я вважаю, що ці 2 мови досить схожі, тому мені простіше перехрещувати один одного. Я не впевнений, чи гарна ідея підібрати інші різні мови. Будь-які думки?
Для мене я людина C # та Java. Я вважаю, що ці 2 мови досить схожі, тому мені простіше перехрещувати один одного. Я не впевнений, чи гарна ідея підібрати інші різні мови. Будь-які думки?
Відповіді:
Я можу придумати щонайменше п’ять причин, щоб вивчити мову, і, здається, ви з часом повинні вивчити одну для кожної з них.
Справа не в тому, скільки мов ви вивчаєте. Йдеться про вивчення нових понять. Деякі мови можуть навчити вас багатьом поняттям, а інші можуть навчити лише одній.
Якщо ви знаєте C #, ви, мабуть, не дізналися б нічого страшного нового, вивчаючи Java. Але ви б, якби навчилися Хаскелла.
Тож коли ви вибираєте нову мову для вивчення, виберіть щось, що навчить вас поняттям, яких ви ще не знаєте.
Я б сказав, що найважливіше - це здатність швидко вчитися. Це означає, що важливо знати різні мови, які використовуються для різних цілей. Наприклад, я знаю:
1) Python та Perl для категорії мов сценаріїв
2) C ++ як "рамкова" мова
3) Java для мобільних додатків
4) C для величезної кількості застарілого коду
5) Деякі застарілі мови, які я знав, коли я був молодий (Basic, Pascal, Clipper тощо)
Я б сказав, що вам потрібна хоча б основна мова та сценарій. Знаючи C #, я б сказав, що вам потрібно вивчити Python або Perl або Ruby далі. (Я б пішов з Python, але це лише питання переваги).
Добре вивчати одну нову мову програмування щороку. Але замість того, щоб вивчити щось подібне до того, що ви вже знаєте, я порадив би вам навчитися чогось кардинально іншого, наприклад, Scala або F #. Це покаже вам нові способи робити речі та зрештою збагатить свої навички програмування.
Ви повинні зосередитись на потрібних мовах і використовувати для своїх справ . Дійсно вивчення мови походить з практики, тому ви отримуєте перевагу від цієї мови, коли ви її практикуєте. Якщо ви збираєтеся вивчати нову мову у вільний час, то робіть це, застосовуючи її у завданнях підвищення складності, щоб ви справді отримали на ній ручку.
концентруватися на жодному. зосередитись на навчанні та написанні чистого коду; чіткий, виразний, простий і, головне, не дублюється.
перейдіть до принципів такого типу програмування, основ (наприклад, інкапсуляція для ООП; що це означає і що це передбачає) та вивчіть деякі принципи
цей матеріал полегшить вашу роботу. це навіть полегшить людей, які працюють з вами чи після вас.
так, ви також повинні добре знати синтаксис. але це не те, на що довго зосереджуєшся
і так, ви також дуже добре розумієте технології, якими ви користуєтесь. але їх можна визначити пріоритетними відповідно до рівня складності, який вимагає ваш бізнес.
останні два не в основному, а в деякій мірі
Програмісту потрібно концентруватися на програмуванні не на спеціальній мові.
Стільки, скільки потрібно, щоб виконати свою роботу.
Але C # і Java такі ж близькі, як англійська Великобританія та англійська США. Ви можете дізнатися щось нове , поїхавши на фінську або навахо.
Я не думаю, що ти обов'язково можеш опанувати мову, не маючи достатнього розуміння інших мов, щоб побачити цю мову "зовні". Кожна інша мова приносить щось інше до столу, а поняття, які вони пропонують, - це речі, які ви можете повернути до основних мов, з якими працюєте.
Тож витрачений час на вивчення інших мов ніколи не витрачається даремно, навіть якщо ви не плануєте використовувати їх у комерційних цілях.
Стара приказка полягає в тому, щоб вивчати мову щороку, і я, безумовно, можу сказати, протягом перших десяти років або приблизно вам потрібно це зробити. Можливо, ви можете вибрати більш глибоке вивчення деяких з тих, кого ви вже знаєте (можливо, оновлення своїх знань з тих, про яких ви дізналися за кілька років тому), або роботу з певними бібліотеками, а не просто безперебійне накопичення нових мов, але постійно стежте за цим. вивчення практики програмування через роботу з різними мовами, безумовно, допоможе вашому розвитку як програміста.
Популярні мови програмування, такі як C # і Java, дозволять вам зайняти більшість місць, але вони не відрізняються одна від одної для вивчення нових способів вирішення проблем. Я думаю, що є кілька мов, якими ви їсте (ті, якими ви користуєтесь для своєї роботи), та інші, з якими ви граєте. Обидва мають своє призначення.
Я виявив, що вивчаючи нові мови програмування, я також навчився нових і більш елегантних способів вирішення проблем. Справа не в кількості мов або в тому, як часто ви їх підбираєте. Кожна мова програмування, яку варто вивчити, має унікальну точку зору, яка змушує підходити до своїх проблем із новим мисленням. Багато разів цінність виходить від вивчення цього мислення.
Я грав з Smalltalk, і мені це сподобалось. Мова була просто приємною для розвитку. Як тільки ви звикли до ідіом, вони допомогли вам бути більш виразними зі своїм кодом. Я взагалі не пропустив статичне введення тексту в Java / C ++ / C #. Генеріки, з якими ми живемо на наших статично типових мовах, справді побудовані для вирішення обмежень, які накладає статичний набір тексту.
Я регулярно використовую Ruby і Ruby на Rails, хоча зараз не для оплати робіт. Принцип проектування Рубі був "збільшення щастя програміста". Ти мусиш любити ці настрої, і здебільшого я думаю, що це забезпечує.
Врешті-решт Java піде шляхом Lisp та Smalltalk, а C # піде за відповідним прикладом. Що там буде, щоб зайняти їх місце, залишається побачити. Зрештою, якщо ви знаєте, як вирішити проблеми, і у вас є кілька способів розрізати та порізати проблему, ви зможете знайти роботу та підібрати будь-яку мову, яка вам потрібна.
Що стосується актуалізації навичок та гнучкості, я думаю, вам слід намагатися вивчати хоча б одну абсолютно нову мову програмування кожні 6 місяців. І я маю на увазі мову, яка дуже-дуже відрізняється.
Тож, вивчаючи більше .net-фреймворку під час використання C # або Java-систем, це допомагає зберігати кінцівки, навчання Haskell, Smalltalk, Scala, Clojure або Ruby розширить вашу техніку та допоможе вам думати по-різному, деякі з яких ви можете корисно використати повернутися до вашої основної мови, і деякі з яких можуть допомогти вам рухатися далі, якщо Java перестане бути королем пагорба.
Якщо ви ніколи не вивчали C, то, хоча його синтаксис було залучено до Java, мислення може бути зовсім іншим. Варто це знати глибоко і навіть краще, розуміючи, як код ОО може бути записаний цією мовою, що здається лише процедурним.
Я рекомендую прочитати книгу Брюса Тейта «Поза Явою», яка занадто добре висвітлює небезпеку існування лише на одній мові, зазначивши зростання та падіння C ++. Незважаючи на те, що C ++ ще далеко не помер, і вже минуло десятиліття, його стає все більше і більше використовувати лише у ситуаціях, які не можуть скористатися підвищенням продуктивності на інших мовах. На відміну від цього, Сінатра, рубінова рамка, дозволяє побудувати просту веб-службу приблизно в 6/7 рядків коду, еквівалент C ++ може бути на порядок більше, ніж цей.
Коли ви не є носієм англійської мови, принаймні ви повинні зосередитися на вдосконаленні своєї англійської мови . Я це кажу на основі свого досвіду. Розуміння цієї мови мені дуже допомогло.
Всі хороші матеріали (книги, статті, код тощо) для вивчення мов програмування, технологій та нових концепцій написані англійською мовою.
Мови - це інструменти для роботи. Деякі мови корисні для деяких типів проблем, інші, як правило, хороші у всіх видах вирішення проблем. Я рекомендую вивчати нові мови, коли вони з'являться. Не захоплюйтесь тим, що модно в цьому місяці, але дізнайтеся, що вони можуть робити, у чому вони хороші. Моя порада - 1 нова мова на рік. Вони виходять швидше за це, але ви прагнете помістити нові інструменти у свій інструментарій, а не бути модною новою дитиною на блоці.
Одне есе, яке розповідає про різницю між мовами, - це "Побиття середніх" Пола Грема. Я рекомендую прочитати його, але тут важлива частина (він використовує "Blub" як гіпотетичну мову, щоб ви не сперечалися про те, що вміє ваш улюблений багаж):
Або як щодо Perl 4? Між Perl 4 та Perl 5 до мови додалися лексичні закінчення. Більшість хакерів Perl погодиться з тим, що Perl 5 є більш потужним, ніж Perl 4. Але, як тільки ви визнали це, ви визнали, що одна мова високого рівня може бути потужнішою, ніж інша. Звідси випливає, що, за винятком особливих випадків, ви повинні використовувати найпотужніші, що ви можете отримати.
Однак ця ідея рідко дотримується її завершення. Після певного віку програмісти рідко змінюють мови добровільно. Якою б мовою люди не звикли, вони вважають достатньо хорошою.
{snip}
Поки наш гіпотетичний програміст Blub дивиться на континуум живлення, він знає, що дивиться вниз. Мови менш потужні, ніж Blub, очевидно, менш потужні, тому що їм не вистачає певної функції, до якої він звик. Але коли наш гіпотетичний програміст Blub дивиться в інший бік, вгору по енергетичному континууму, він не розуміє, що шукає. Те, що він бачить, - просто дивні мови. Він, ймовірно, вважає їх за еквівалентні Блубу по силі, але з усіма цими іншими волохатими речами також кинуті. Блуб для нього досить хороший, тому що він думає в Блубі.
Однак, коли ми переходимо до точки зору програміста, використовуючи будь-яку з мов, що піднімають континуум потужності, однак ми виявляємо, що він у свою чергу дивиться на Блуба. Як можна щось зробити в Blub? Цього навіть немає у.
За індукцією, єдиними програмістами, які зможуть побачити всі відмінності у силі між різними мовами, є ті, хто розуміє найпотужнішу. (Це, мабуть, мав на увазі Ерік Реймонд про те, що Лісп зробив вас кращим програмістом.) Ви не можете довіряти думкам інших людей через парадокс Блуба: вони задоволені якою мовою вони користуються, бо це диктує як вони думають про програми.
http://www.paulgraham.com/avg.html
Більшість заявок, які ми постачаємо, написані на C # або VB. Коли нам потрібно було додати сценарій до програми, ми вибрали Python (Lua був вибором другого учасника). Ми вивчаємо F #, тому що це може зробити кілька нових волохатих речей, які важко пояснити і зрозуміти, якщо всі знають, це C # / Java / VB.
Перш за все, існує декілька мов, яких важко уникнути для більшості програмістів: javascript, sql, c тощо.
також непогано знати мову сценаріїв, написаних качкою ... наприклад, один з perl, python, ruby, lua і т. д., це надзвичайно корисно для безлічі проблем, включаючи автоматизацію більшості власних щоденних друкувань
на краще чи на гірше, ви, швидше за все, також наткнетесь на c # та / або java, вони досить поширені.
ні в якому разі не обмежуйте себе штучно. ті кодери, яких я знаю, які явно уникають підбору цікавих інструментів, схоже, мають закриті світогляди та обмежений вплив.
Це могло б стати певним дебатом між спеціалістами та генералістами. Деякі люди можуть витратити довгий час, знаючи одну мову до великих глибин, що добре справляється з ними. Інші люди можуть хотіти трохи знати про купу різних мов, які добре працюють для них. Більшість людей перебувають між цими двома крайнощами.
Якщо ви хочете запропонувати мови для вивчення тут, є декілька ідей:
Функціональне програмування - тут є приклади Haskell або Lisp, і зміна парадигми може бути певною мірою поворотом голови.
Специфічна база даних - PL / SQL або T-SQL приходять до уваги як щось, що може бути корисним, якщо ви хочете виконати більше бек-енд-систем із системами, для яких потрібна база даних для певного функціоналу.
Мови веб-інтерфейсу - ActionScript або Javascript можуть бути прикладами тут мов, які використовуються у програмах Rich Internet, хоча AIR може змусити деякі настільні додатки використовувати веб-дзвінки в деяких випадках, як Twhirl, використовуючи API Twitter.
Це лише ідеї, і залежно від того, де ви хочете опинитися, вони можуть бути корисними або марними для вас. Удачі в будь-якому виборі.
Програміст повинен знати три мови: C, англійська та Something Else.
C дуже важлива мова, вона близька до машини і має правила синтаксису, спільні для декількох мов високого рівня. C змушує вас думати про такі речі, як структура даних зовсім іншим чином, ніж Java. Крім того, vms Python та Ruby вбудовані в C, і ви можете вбудувати C на обидві мови, коли хочете підвищити свою швидкість.
Англійська мова є загальною мовою програмування. Більшість книг, технічних звітів, технічних веб-сайтів та журнальних робіт виходять спочатку англійською мовою, а іноді й виключно англійською. Крім того, якщо англійська мова не є вашою першою мовою, вивчення англійської мови розширить ваш інструментарій для маніпулювання поняттями (це, звичайно, стосується і тих, хто володіє англійською мовою, що вивчає іншу мову).
Щось інше повинно бути мовою, яка не є процедурною, або не є статично набраною, або сильно об'єктно орієнтована, або якимось чином принципово відрізняється від C. Haskell, Scala, Python, Ruby, деякий діалект Ліспа, як би там не було .
Після цього ви зможете дізнатися, до чого вимагає конкретна ситуація, ймовірно, C # або Java.