LINUX.ORG.RU

Стоит ли браться полному новичку за язык Go?

 , , ,


0

3

Здравствуйте! Для новичков, которые вообще не программировал ни разу, ни на каких языках, стоит ли браться за язык Go? Я хотел освоить язык Си, но, книга которую я читал неудовлетворил меня, до половины прочёл и заброисил это дело, уж очень сложно там написано. Это Стивен Прат, Язык программирования C. Лекции и упражнения, 5-е издание (2013). И разачарован в языке Си. А теперь немного погуглив, нашёл язык Go, что, мол он тоже почти похож как Си, но только легкий для освоения. Посоветуйте как поступить в моём случае? Цели мои: понять, вообще что такое программирование, и сделать крепкую опору изучив один язык, мог понимать другие языки.



Последнее исправление: xazihivale (всего исправлений: 1)
Ответ на: комментарий от zolden

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

FIXED

korvin_ ★★★★★
()

Нет. Go хороший язык для корпоративного сектора, но плохой в академическом смысле.

mersinvald ★★★★★
()

Если ты новичок, учи максимально востребованные в индустрии языки. Это C++, Java, PHP и Javascript. Конкретный выбор зависит от предпочтений области, в которой хочешь работать.

Но мой тебе совет, если есть альтернатива беги ты от этого программирования, пока не поздно.

anonymous
()

Не стоит брать Golang

Для новичков, которые вообще не программировал ни разу, ни на каких языках, стоит ли браться за язык Go?

Не стоит. Язык подходит только для web'a, и то не совсем. Хайп вокруг него - сильно раздут Google, которая создавала язык для того, чтобы не профильные программисты (программисты python) могли писать сложные системы, не переучиваясь на Java, C++, Erlang, Rust, etc.

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

Берите K&R. Лучшая книга по Си и для начала очень подходит. Всё просто, понятно, без особых сложностей. Хотя простите за вопрос, а зачем вам вообще в программирование? Какие задачи хотите решать?

Это Стивен Прат, Язык программирования C. Лекции и упражнения, 5-е издание (2013).

Хорошая книга. Скорее всего читали просто копипастой примеров, поэтому не поняли.

И разачарован в языке Си.

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

А теперь немного погуглив, нашёл язык Go, что, мол он тоже почти похож как Си, но только легкий для освоения.

Ничем не похож. Он ближе к Python, находится выше на уровне абстракции. Единственные общие вещи - это фигурные скобочки и возможность работы с памятью. Всё, на этом схожесть кончается. И нет, Golang не сможет заменить Pure C. Особенно для понимания работы самого компьютера.

Посоветуйте как поступить в моём случае? Цели мои: понять, вообще что такое программирование, и сделать крепкую опору изучив один язык, мог понимать другие языки.

  • Два раза подумать, правда ли интересно программирование. Быть может это вообще не ваше. Зачем вам эта профессия?
  • Взять K&R, прочитать. Написать что-то простое для себя. К примеру - файловый менеджер или тетрис.
  • Подумать куда идем, - вебота или декстоп.
  • Если выбота
    • Берем HTML, за неделю осваиваем разметку
    • Берем CSS, за вторую неделю осваиваем вёрстку (все это не так глубоко, но для старта хватит).
    • Берем JavaScript - осознаем как работать с DOM на уровне сервера
    • Параллельно - читаем что такое протокол HTTP и зачем о нужен (спецификацию понять можем, ведь мы до этого уже немного изучили Си и азы системного программирования)
    • Берем NodeJS/ES6 (тот же JavaScript, только уже на уровне сервера) + фреймворк вроде Express. Делаем серверную часть. В качестве БД - MongoDB.
    • Берем для frontend какой-нибудь фреймворк. Polymer и React выглядят лучше всего. Если хочется больше строгости - Ember (на самом деле я бы даже советовал его - пересесть на что-то после него очень просто и быстро можно).
    • Опционально повторяем последние два шага для Python3 + Django, Ruby + Rails, PHP + Laravel || Yii.
    • Паралельно с NodeJS разбираем SICP. Язык - Racket.
    • Далее - читаем про нагруженные сервисы и паттерны их построения. С NodeJS можно пересесть на Rust, Erlang или Java/Clojure для таких задач. Хотя и NodeJS хватит.
    • Опционально - изучаем Electron, чтобы писать декстоп приложения на том же стеке.
    • В процессе - читаем умные книги, вроде «Совершенный код», «Жемчужины программирования», «Искусство программирования» и т.п.
  • Если декстоп:
    • Берем учебник Юрова по Assembler, читаем, делаем простые примеры под DOS. Наша задача понять как оно работает на уровне железа.
    • Изучаем паттерны ООП и берем Java (ынтерпрайз и кросплатформ), C# (оффтопик) или С++/Qt (кроссплатформ, больше юниксово).
    • Не верим в то, что на интерпретируемых языках можно написать нормальное приложение для бизнеса. Исключение - платформы вроде Electron или QML, которые изначально заточены под это. Пока веберы начинают зарабатывать на доширак - переходим к написанию простой утилиты. Желательно что-то вроде морды к БД, 100500 файлового менеджера или тетриса.
    • Читаем SICP, изучаем Rust, D. Осознаем почему Golang ушел в веботу.
    • Решаем какая из платформ мамонтов будет нашей - .NET, JVM, Qt. Остальное не нужно практически работодателю. Чаще всего нужно первое.
    • Изучаем Haskell, постигаем дзен ФП. Потом пробуем ФП язык под нашу платформу.
    • Изучаем Racket/Common Lisp - осознаем, что другие языки не нужны. Плачем, что он не применяется практически и дальше идем грызть ынтерпрайзный кактус.
    • Изучаем TCL, осознаем почему продажа ЛСД в промышленных масштабах - это плохо, почему язык не стал популярным и почему кроме TCL вообще больше ничего не нужно. Материмся, что Тк такой страшный.
    • Изучаем Smalltalk и понимаем: а) ООП нигде нормально, кроме него не реализовано; б) плачем что он в рашке не популярен; в) мечтаем работать на нем и продолжаем работать на....
    • Изучаем параллельно книги по паттернам. Перечислены примеры в веботе.
silver-bullet-bfg ★★
()
Ответ на: комментарий от Taetricus

По моему самый лучший выбор для новичка.

Крайне не соглашусь. Для новичка лучше роадмеп с изучение азов. Golang хорош для того, чтобы быстро налабать асинхронный сервер на компилируемом языке, если до этого занимался скриптотой. Так - он травмирует понимание ООП и ФП очень на долго. О системном программировании я вообще молчу.

Недавно сам учил. За 3 часа выучил до базового уровня (Вот сайт), за 2 дня написал многопоточное приложение для собственных нужд(несколько раз гуглил некоторые вещи).

Это плюс для тех кто знает хоть что-то. ТС - нуб.

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

Ключевое - «из которых я учил». Это а ТС вообще ничего не знает по матчасти. Си - тут лучший выбор и от него никуда не уйти.

А почему именно C? По моему это достаточно плохой выбор для начала.

А что лучше для понимания системщины, если не Си? Да и язык простой + служит параметром естественного отбора для тех, кому лучше не быть в профессии.

Когда я учил C, я знал только Pascal, Basic и Assembler, и среди этих 4 языков мне больше pascal понравился(хотя и он не ахти).

Может поэтому и нравится Golang, т.к. он все же ближе к ML, виртовским языкам и алголоподобным, нежели к c-family?

Go подойдет что узнать, что такое програмирование.

Т.е. вы считаете, что надо давать новичку сразу асинхронщину и урезанное представление ООП и ФП?

Помоему сейчас нет ни одного языка, изучив который ты сможешь легко понимать все другие языки. Вожмоно я ошибаюсь, но по моему чтобы понимать другие языки нужно изучить примерно следущий список: Assembler, C, Java, Haskell, Python, Forth, Lisp, JavaScript.

Список плюсую. Согласен. Заметьте, рекомендуемый вами же Golang вы сюда не включили)

silver-bullet-bfg ★★
()
Последнее исправление: silver-bullet-bfg (всего исправлений: 2)
Ответ на: комментарий от silver-bullet-bfg

Для новичка лучше роадмеп с изучение азов.

Так - он травмирует понимание ООП и ФП очень на долго. О системном программировании я вообще молчу.

Понятно что изучение нужно начинать с азов, именно этим Go и хорош, позволяет изучить азы бел отвлечения на всякие ООП и ФП специфичные вещи. На понимание ООП и ФП уверен изучение Go особо ни как не повлияет, говорю как человек начинавший с изучения Basic на ZX SPectrum, я без проблем понял идеи и ООП и ФП и использовал их на практике в Delphi и Haskell. Насчет системного программирования, возможно ошибаюсь но мне кажется процентов 60 успешных программистов вообще этой темы не касаются, да и к тому же опять на собственном примере, изучение ассемблера и написание программ работающих на голом железе у меня прошло без особых проблем.

Это плюс для тех кто знает хоть что-то. ТС - нуб.

Это был всего лишь показатель простоты языка, например тут python предлагали, так у меня на его изучение(до такого же уровня) ушло около 8 часов.

Ключевое - «из которых я учил». Это а ТС вообще ничего не знает по матчасти. Си - тут лучший выбор и от него никуда не уйти.

По моему C тут один из худших, но возможных вариантов. Выше вероятность сделать ошибку, нет сборщика мусора. К тому же сами себе противоречите перейти на ООП и ФП с C куда тяжелее, нет ни интерфейсов, ни методов. Да для изучения системного программирования подходит лучше, но системное программирование это вообще ни тема для новичка.

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

А кто вас назначил решателем кому в профессии место, а кому нет? Если именно как специальность - пусть работодатель решает кто ему нужен, профессионал за дорого, или быдлокодер за дешево. Если речь просто о написания программ, то кто вам запрещает не использовать школопрограмки вместо профессиональных решений? Лично я не однократно использовал программы явно написанных дилетантами, но при этом решающих мои задачи куда лучше чем более профессиональные программы. Тут принцип простой не хочешь - не пользуйся.

Может поэтому и нравится Golang, т.к. он все же ближе к ML, виртовским языкам и алголоподобным, нежели к c-family?

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

Т.е. вы считаете, что надо давать новичку сразу асинхронщину

Если ассинхронщина в таком виде как они имеется в Go, то почему нет ? Я Go из-за неё и выучил, она здесь предельно простая и удобная.

и урезанное представление ООП и ФП?

Когда человек захочет перейти на ООП или ФП, ему будет многое уже знакомо и понятно.

Список плюсую. Согласен. Заметьте, рекомендуемый вами же Golang вы сюда не включили)

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

Taetricus
()
Ответ на: комментарий от Taetricus

Понятно что изучение нужно начинать с азов, именно этим Go и хорош, позволяет изучить азы бел отвлечения на всякие ООП и ФП специфичные вещи.

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

На понимание ООП и ФП уверен изучение Go особо ни как не повлияет

Еще как. Хотя бы возьмите представление ООП по А.Кею и то подобие, которое есть в Golang. В свое время мой знакомый так по С++ учил ООП, так до сих пор считает, что С++ эталон реализации ООП. И плевать, что Simula - не была полноценным ООП...

говорю как человек начинавший с изучения Basic на ZX SPectrum, я без проблем понял идеи и ООП и ФП и использовал их на практике в Delphi и Haskell.

А сколько перед этим была практика?

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

А потом получаются программы, которые весят 2 гига. Или казусы - вон у меня коллега недавно выдал, что VM для JavaScript нет, а NodeJS исполняется прямо в браузере его. Вся серверная логика. И поэтому не безопасна. Т.к. любой человек может ее посмотреть. А почему? Человек просто не понимает разницы между интерпретацией, компиляцией в натив и компиляцией в байт-код. И то где он исполняется. А это уже системный уровень.

Это был всего лишь показатель простоты языка, например тут python предлагали, так у меня на его изучение(до такого же уровня) ушло около 8 часов.

А сколько до этого языков было? Когда мне надо было пересесть на Rust я его часов за 12 усвоил на базовом уровне. Но это не значит, что «ржавчина» простая. Скорее просто то, что я с подобными языками уже сталкивался.

По моему C тут один из худших, но возможных вариантов. Выше вероятность сделать ошибку, нет сборщика мусора.

Все это скорее плюсы. Человек поймет как работет память и сделает ошибки эникея.

К тому же сами себе противоречите перейти на ООП и ФП с C куда тяжелее, нет ни интерфейсов, ни методов.

Нисколько. В Pure C нет ни ФП, ни ООП. Поэтому извратить понимание этих парадигм он не может.

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

Как можно быть программистам не понимая как работает конечный автомат? Потом появляются «программисты», которые плодят по 50 переменных на каждый чих, думаю что они память не будут занимать.

А кто вас назначил решателем кому в профессии место, а кому нет?

Меня - никто. А вот возможность освоить сложный инструмент - показатель. Не можешь освоить - лучше занимайся чем-нибудь другим. Где вреда не будет. Не можешь выучить Pure C - нечего делать в программистах.

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

А потом после быдлокодера поддерживать код. И дописывать. И рефакторить. А все почему? Потому что работадатель думал, что нанимает джуна, который способен учиться. А не племенного быдлокодера, который на все изобретает костыли и велосипеды.

Если речь просто о написания программ, то кто вам запрещает не использовать школопрограмки вместо профессиональных решений?

Человек решил попробовать программирование, явно не в качестве увлечения. Для школопрограм хватит и Lazarus.

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

Если не секрет - по каким? Всегда было интересно чем мотивируются люди выбирая Golang и Python вместо нормальных языков программирования.

Если ассинхронщина в таком виде как они имеется в Go, то почему нет ? Я Go из-за неё и выучил, она здесь предельно простая и удобная.

Спрошу просто - зачем Golang, если есть Erlang и Elixir? + простота не всегда хорошо. Она не стимулирует разбираться в матчасти.

Когда человек захочет перейти на ООП или ФП, ему будет многое уже знакомо и понятно.

Сравните подобие ООП Golang и то, что описывал А.Кей. Где легче то будет? По ФП - аналогично. Не вижу чем будет от Golang легче в том же хацкеле, если не монадами во все места.

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

А я бы сказал - что он отвратительная комбинация из нормальных идей. Хуже только Python. Нет, я не спорю - языки можно применять для достижения бизнес-целей. Но учить по ним... обрекать человека на быдлокод изначально.

silver-bullet-bfg ★★
()
4 ноября 2017 г.

НЕТ!

Не нужно тратить силы на говно. Учи С или С++.

anonymous
()

Похудей для начала

anonymous
()

После диеты: Привет слим (шэйди?)!
Стоит! Браться за Go?!
Ты вот хотел освоить Си - освоил до середины Праты(редкая птица долетает так далеко)-книги которые удовлетворяют это несколько другой жанр

тебе программировать зачем? есть мелочи которые как гвоздь в ботинке мешают ? вот их и за программируй на меньшее мешание твоему бытию.

по освоению Си легче освоить чем Go, особенно если сравнивать первоСи (который шёл в комплекте с недошелом и был скриптотой выстерлил и упал) и golang 1.92 который всё более и более библиотеко обмазаный и для разумного использования которых следует понимать те области под которые библиотеки ты используешь ибо иначе будет «тарусы на колёсах»

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

anonymous
()
Ответ на: комментарий от korvin_

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

Дополнено.

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

язык Си - чудовищно прост и примитивен

В изучении, но не в применении.

RazrFalcon ★★★★★
()

Стоит ли браться полному новичку за язык Go?

Полному? Ни в коем случае! Похудеешь, тогда приходи.

anonymous
()

Из треда я понял что Go отличный язык для начинающих и его стоит учить, но его не стоит учить потому что язык Go запутанное бесперспективное гавно. ЛОР такой ЛОР...

enso ★★★★★
()

Мне кажется Го хороший выбор, он (сообщество) учит хорошему: простоты, ясности, юниксвейности, и тому подобным вещам. Хотя, я бы предпочел С, в нем больше низкоуровневых вещей.

urxvt ★★★★★
()

ТСу

Для совсем новичка, я бы прсоветовал следующие книги: 1.Девид Гриффитс, Дон Гриффитс - Изучаем программирование на С (2013) 2.Бен Клеменс - Язык С в ХХI веке (2015) 3.Brian Ward- How Linux Works 2nd edition (2016)

sqq
()

ТСу

а вообще я для совсем новичка посоветовал бы начать с Pythona, а дальше уже бы решал что учить

sqq
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.