LINUX.ORG.RU

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

 , , ,


0

3

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



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

Чтобы это понять, не нужны указатели, нужно прочитать модель памяти.

В которой рассказывают про указатели.

anonymous
()

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

Просто интересно, чем?

flyshoot
()
Ответ на: комментарий от Falcon-peregrinus

C заставляет упираться в совершенно нетривиальные и почти бесполезные в остальных языках указатели.

нетривиальные

Что? Что в указателях нетривиального?

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

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

Тогда либо книгу меняй, либо изучай Lua.

+1 :)

Stil ★★★★★
()

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

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

Я хотел освоить язык Си, но, книга которую я читал не удовлетворил меня, до половины прочёл и забросил это дело, уж очень сложно там написано. Это Стивен Прат, Язык программирования C. Лекции и упражнения, 5-е издание (2013).

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

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

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

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

Они ни капли не похожи.

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

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

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

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

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

Нет, эти точно нужны.
Assembler - чтобы понимать как все работает на аппаратном уровне и почему многие вещи в языках высокого уровня реализованы так, а не иначе.
Python - как пример языка без статической типизации.
Forth - как пример стекового языка.
JavaScript - как пример языка в котором можно безнаказанно складывать строку и число.

Taetricus
()

Прочитай Лутца - Python. Потом алгоритмы из Кормена попрогай на Python'е. Потом можешь двигаться к Java или JavaScript'у, смотря на то, насколько тебе захочется типизации.

А с Си - возьми K&R по старому стандарту и осваивай потихоньку. Подхода с 8 осилишь (год-два по времени для полного новичка в программировании без преподавателей). Осилишь Си - уже будешь примерно осознавать, хочешь ли ты осилять плюсы.

Deleted
()

Объектный Паскаль :)

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

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

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

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

понимать как все работает на аппаратном уровне

чтиво по процам + тененбраум и хватит. Богомерзкий Intel терпеть не могу а по AT&T хрен нормальной литературы, ну да ладно давно писал на асме.

Forth - как пример стекового языка.

Forth - как то вообще не помог, лучше prolog посмотреть.

JavaScript - как пример языка в котором можно безнаказанно складывать строку и число.

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

Python - как пример языка без статической типизации.

а лиспы на что? без статики и на скобочки посмотреть можно.

robotron5
()

полному новичку (и вообще никому) не стоит браться за программирование ради программирования. Язык роли не играет.

С Си вы обломались именно по этой причине - нет интересующих Вас задач, нет результата.

То-же самое будет с любым другим.

Сначала - сфера приложения сил, потом выбор инструмента.

В любой области есть 2-3 мейнстримовых языка причём с разными парадигмами и уровнем, которые «в том муравейнике» приняты, и с разным уровнем вхождения. Всегда есть из чего выбрать.

Но вам должен быть интересен результат.

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

.

MKuznetsov ★★★★★
()

Вставлю свои пять копеек. Если хочешь на самом деле стать программистом, начинай с самого примитивного бейсика:

10 PRINT "HELLO WORLD"
20 END

Там нет сложных абстракций и кучи непонятной фигни, которую придется бездумно копи-пейстить, потому что «так надо» и иначе не заводится. Поясню на примере. В программе на бейсике выше, новичку будет понятно все: номера строк, команды PRINT и END, литерал «HELLO WORLD». Ничего лишнего. В той же жабе аналогичная программа будет выглядеть примерно так:

package demo;

public class MyDemo {
    public static void main(String[] args) {
        System.out.println("HELLO WORLD");
    }
}

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

Так что, начинать нужно с бейсика. Проще всего в виртуалочке под досом его гонять. Написать несколько простых программ, дойти до уровня, когда можешь реализовать клон Space Commander.

После этого нужно браться сразу за ассемблер. Тут не нужно лезть в дебри protected mode и тонкостей x86_64, лучше пописать, опять же, под дос. Понять, как устроена машина, как ей управлять на самом низком уровне. Как ни странно, зная бейсик, понять ассемблер оказывается достаточно просто. Проще, чем зная жабу или тот же го. На ассемблере желательно снова дойти до уровня, когда можешь написать простенькую игрушку.

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

А вот после С уже имеет смысл браться за ООП (жаба, С++); изучать интерпретируемые языки вроде питона и жабаскрипта; разбираться в архитектуре современных ОС, data strucutures, базах данных, сетевых технологиях и прочем таком. И постоянно учиться чему-то новому.

Как-то так.

Если хочешь быстро, то смотри сюда: http://abstrusegoose.com/249

ddos3
()

до половины прочёл и заброисил это дело, уж очень сложно там написано

Это нормально. Со второго захода закончишь.

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

Неважно, какой язык. Концепции программирования всегда вызывают определённые трудности для новичков.

Go - хороший язык. Легкоусвояемый. С хорошей книгой его будет легко понять.

rupert ★★★★★
()

ТС, лучше бы спросил какой дистрибутив лучше :)

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

Пропал из темы = видать тролль :)

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от robotron5

Богомерзкий Intel терпеть не могу а по AT&T хрен нормальной литературы, ну да ладно давно писал на асме.

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

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

Неплохо ты так набрасываешь, душевно, но я бы вместо бейсика про кобол написал. И вот тут у тебя «не» лишняя случайно проскочила:

Тут не нужно лезть в дебри protected mode

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

-

Возможность не объявлять переменные и так способна дать новичку (и даже не новичку) лишние способы прострелить себе ногу. А в Питоне к этому ещё добавляется синтаксис, зависящий от отступов.

Какой же кал у тебя за не первый десяток лет в голове скопился. Скажи, только откровенно, ты педант?

anonymous
()

Суди сам, фундамент должен быть очень крепкий, иначе здание может просто развалится(т.е. шаг влево или шаг вправо и ты в болоте). Посему разбирай алгоритмы, а языки это лишь реализация этих алгоритмов. На текущий день шансов понять механизм работы программ на низком уровне, не углубляясь в железо - это общепринятый язык «С». С++ - это схоже, но если по нормальному на нем писать - то это совсем другая концепция. Новые языки GO,Rust,D, и т.д . стоит изучать после базового С. Тем более синтаксис новых языков имеет заимствования из того же самого «С» (что говорит о том что авторы изучали его, но им хотелось некоторых изменений). Язык Pascal - вполне может быть использован в качестве первого, но как следствие его нераспространенности - будешь писать как правило маленькие(частные) программы. Можешь на нем застрять. Языки уровня C#, Java, Python - не для первого ознакомления (много наворочено, будешь потом плавать в базовых вопросах, да и ошибки будут смешные). Языки Perl,PHP - специализированы для WEB. Если будешь писать _первые_ сайты - то это первый твой язык для сайтов.

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

Какой же кал у тебя за не первый десяток лет в голове скопился.

Ну, насчёт отступов он частично прав. Теоретически, тупой новичок может намешать табов с пробелами и через это огрести головной боли.

Esper
()

Начинай с C (книга K&R), Racket. Потом решишь куда дальше идти.

anonymous
()

Плюсую всех, кто советует C перед другими ЯП. А перед изучением собственно С полезно пописать на ассемблере...

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

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

После

А в Питоне к этому ещё добавляется синтаксис, зависящий от отступов

этому человеку не особо хочется верить.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Esper

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

Только тупой и только новичок?

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

Когда работоспособность программы зависит от невидимых символов - это пипец.

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

Ну да, всё верно. Чисто теоретически, если вместо головы пользоваться жопой, то «огрести» можно вне зависимости от того, каким языком ты пользуешься.

anonymous
()

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

Ты её просто читал, или пытался что-то набрать, скомпилять в gcc, поменять код и посмотреть, что получится? Если просто читал - ничего удивительного, волшебство программирования можно проникнуться только на практике.

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

Только тупой и только новичок?

Ну, может, ещё некомпетентный идиот.

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

Когда работоспособность программы зависит от невидимых символов - это пипец.

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

Esper
()

Стивен Прат

хаха, ох лол. Зачем вообще начинать читать это дерьмо было? Хотя если сложно, то я не знаю. Но тот чувак как учитель не очень, это факт.

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

Когда работоспособность программы зависит от невидимых символов - это пипец

Что же мешает включить их отображение? К тому же всё что я пытаюсь писать на Python у меня чисто на табах. Так что какие бы там символы ни были - заработает.

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

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

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

Допустим не тролль

Увы, поиск по темам ТС выводит на это.

Расходимся, посоны.

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

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

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

Но в питоне табы всегда не айс.

Что, прости?

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

Не любой, а только тот, который помимо грамотного автоформатирования при нажатии на клавишу tab вставит необходимое (и заранее определенное, хотя глупо отрицать, что всё кроме 4 - от лукавого) количество пробелов. Ещё может пригодиться функция автозамены уже имеющихся по какому-то недосмотру табов на пробелы. И может быть автоудаления всех лишних пробелов при сохранении (не представляю зачем они могут быть нужны). Кроме того необходима подсветка синтаксиса (корректная и быстрая). Под это описание подходят kate и vim.

anonymous
()

А какова цель то изучения? Шо бы було?) От цели и надо отталкиваться. Самый универсальный язык - Python. Чтобы начать деньги зарабатывать - к программированию должно тянуть как магнитом, тут подойдёт JavaScript. Начинай с НЕ типизированных языков. Чтобы можно было писать:

var a = 10
А не с указанием типа переменной:
float a = 10.0

Это упрощает чтение и понимание кода на первых порах. Про твой Go - он типизированный, поэтому не подходит для обучения полных нубов.

menangen ★★★★★
()
Ответ на: комментарий от Esper

Он имеет ввиду, что отступы в питоне регламентированы пробелами, а не символами таб. Тут он «отступы» называет «табы».

menangen ★★★★★
()

полному новичку

Простая и быстрая обучалка: PascalABC.net ©, а уж опосля можно и с'извращаться :)

quickquest ★★★★★
()

стОит
и даже не пытайся начинать с си

kto_tama ★★★★★
()
Ответ на: комментарий от menangen

Он имеет ввиду, что отступы в питоне регламентированы пробелами, а не символами таб.

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

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

Я тоже думаю, что лучше бы ему начать с другого языка. С русского.

anonymous
()

Пока все задачки из SICP'a не прорешаешь, ПРОГРАММИСТОМ-ИНЖЕНЕРОМ тебе не стать.

// HIGHLAND

anonymous
()

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

trex6 ★★★★★
()

Сишку сначала всё таки освой, ибо самая крепкая опора.
Дейтелей почитай, там всё очень просто написано - школьники младших классов даже поймут.

paran0id ★★★★★
()
Ответ на: комментарий от menangen

Начинай с НЕ типизированных языков

Чтобы можно было сложить ежа с ужом и удивляться, почему получился единорог?

Чтобы можно было писать:

var a = 10
Про твой Go - он типизированный, поэтому не подходит для обучения полных нубов.

Во-первых…

А во-вторых…

Я уж не говорю про вывод типов во всякой функциональщине.

korvin_ ★★★★★
()

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

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