Задался таким вопросом, так как решаю изучать C++ (or, &&) не изучать, после прочтения одной статьи, там говорится что каждый (программист, разработчик, кодер) обязан знать C/C++/Assembler(хотя бы азы).
И сразу возникает вопрос, если я займусь изучением этого языка, какой профит я в итоге буду иметь? Ибо терять время чтобы самоутвердиться нет никакого желания.
Листаю гугл уже более недели, общая картинка начала складываться, но очень смутно.
По семантике и синтаксису очень напоминает js, поэтому погонять простенькие куски кода не составило особого труда. Но страуструп разработчик этого языка утверждает, что чтобы полноценно программировать на C++, нужно будет заниматься только этим ЯП.
Это совершенно разные языки, похожи они могут быть только в плане синтаксиса, но ни как не в плане семантики. В плане семантики они скорее полностью противоположны друг другу.
Даниил Колесниченко: Да и по синтаксису разве что наоборот, а не как ТС пишет. Это многие языки копировали синтаксис C/C++, но уж никак не в обратную сторону.
AVKor: Мда...
Об том что C++ копировал синтаксис с js и речи нет, ТС пишет что "напоминает".
ТС-у прекрасно известно что js написан на С++ и он Си подобный.
Будьте внимательнее.
Иван Соломенников: Если уж продолжать жевать эту тему, то надо было написать наоборот: синтаксис js напоминает синтаксис C/C++, поскольку так выглядит гораздо логичнее.
>>Задался таким вопросом, так как решаю изучать C++ (or, &&) не изучать, после прочтения одной статьи, >>там говорится что каждый (программист, разработчик, кодер) обязан знать C/C++/Assembler(хотя бы азы).
Нет, не каждый. Разработчик на С++ обязан знать С++, другие -- не обязаны.
>>И сразу возникает вопрос, если я займусь изучением этого языка, какой профит я в итоге буду иметь?
Разумеется, будешь знать язык С++ и сможешь на нём работать.
>>По семантике и синтаксису очень напоминает js, поэтому погонять простенькие куски кода не составило >>особого труда.
По синтаксису JS происходит от Java, а Java происходит от С++, поэтому тебе кажется, что С++ похож на JS, но на самом деле всё наоборот -- JS напоминает C++.
По семантике C++ и JS -- очень разные языки, трудно найти наверное более разные.
И на счёт "без особого труда" -- я сильно сомневаюсь.
>>Но страуструп разработчик этого языка утверждает, что чтобы полноценно >>программировать на C++, >>нужно будет заниматься только этим ЯП.
Не думаю, что он так когда-нибудь утверждал.
>>Собственно исходя из этого и возникает вопрос!
Если ты занимаешься только WEB-разработкой, то учить С++ для WEB-разработки бессмысленно -- С++ для этого практически не применяется. Все WEB-сайты -- это, как бы сказать, программы с низкой ценностью, а С++ -- язык, требующий высокую культуру программирования и большой уровень, а также обладающий высокой себестоимостью производства единицы работающего кода. Вследствие этого для WEB-программирования С++ практически не применяется. Т.е. применяется, но очень редко, и в такие проекты ты вряд ли попадёшь. А вот системное ПО, типа например nginx или apache, наоборот, обладает
высокой ценностью единицы работающего кода, и такое ПО как раз и пишут на С++ или С.
В плане же общего развития изучение С++ очень полезно, но для тебя и тебе подобных программистов не
в том, что оно полезно само по себе, хотя и это так, но в том, чтобы раскрыть возможность и особенности общения с реальным железом и операционными системами, без прослоек в виде виртуальных машин и интерпретаторов. Т.е. он тебе бы дал понять, как реально выглядит компьютер изнутри и как рельно работают программы. Это полезно.
Правда, для этой цели подошли бы и любые другие языки программирования такого класса, pascal, fortran, algol и им подобные.
masterziv: >>И на счёт "без особого труда" -- я сильно сомневаюсь.
А что там сложного чтобы погонять небольшие куски на C++? Например функцию которая возводит число в степень, факториал числа, мат функции.
>>Не думаю, что он так когда-нибудь утверждал.
На хабре читал перевод его интервью.
>>В плане же общего развития изучение С++ очень полезно, но для тебя и тебе подобных программистов не в том, что оно полезно само по себе, хотя и это так, но в том, чтобы раскрыть возможность и особенности общения с реальным железом и операционными системами, без прослоек в виде виртуальных машин и интерпретаторов. Т.е. он тебе бы дал понять, как реально выглядит компьютер изнутри и как рельно работают программы. Это полезно.
Ну как бы, я перед тем как в веб лезть больше года в asm коде интуитивно ковырялся, читал манул Рикардо Нарвахи для изучения ollydbg.
masterziv: >>И на счёт "без особого труда" -- я сильно сомневаюсь.
>>А что там сложного чтобы погонять небольшие куски на C++? Например >>функцию которая возводит число в степень, факториал числа, мат функции.
Это проще, да. А вот работа с массивами и указателями, работа с памятью,
с классами -- это гораздо сложнее :-)
>>Ну как бы, я перед тем как в веб лезть больше года в asm коде интуитивно >>ковырялся, читал манул Рикардо Нарвахи для изучения ollydbg.
Ковыряться мало, надо систематически изучать. В университете там, и т.п.
Вопрос-то не "нужен ли", а "чем может быть полезен". Я, хорошо зная С++, уверен, что мне это знание помогает.
Но ТС, конечно, занимается ерундой. С++ нельзя выучить по учебнику. Только руками, за годы практики. Простое же знание синтаксиса не даст вообще ничего.
Иван Соломенников: Вы практически открытым текстом написали, что всерьез и надолго писать на "крестах" не собираетесь. Это значит, что вы ничему полезному не научитесь, увы. "Не след и начинать".
Для программистов самое интересное – это то, для генерации приложений в WebAssembly можно будет использовать не JavaScript, а другие языки. Первым, для кого делается поддержка, является C++. Ветераны указатели и шаблонов снова впереди
Суть в следующем:
C/C++/Assembler - это низкоуровневые языки (например там нужно выделять память под объекты и не забывать её освобождать)
Поэтому всегда видно какой из алгортим, чего стоит для железа.
На высокоуровневых языках - это все скрыто.
И для понимать, что в реальности происходит, и писать более оптимальный код с точке использования ресуросов, нужно иметь опыт по C/C++/Assembler.
Тоесть изучать только синтаксис C/C++/Assembler нет смысл, также нужен опыт.
В дальнейшем это сделает вас более квалифицированным специалистом.
Нужно это для общего профессионального развития, напрямую не пригодится. Нужно брать учебник по (C/Assembler), упражнения, и потихоньку проходить. Причем С желательно параллельно с Ассемблером, С++ тут как-то мимо.
C++ и веб, ну очень сомнительно. максимум какие-то серверные фишки можно делать и по-моему это будет максимальное приближение С++ к веб.
Если есть желание изучать язык начинающийся с "С" для веба, то окунись в среду C# ;)
Я бы посоветовал, если уж хочется общего развития, действительно познакомиться с С или Ассемблером (неглубоко - ровно настолько, чтобы понять, как программистские конструкции доходят до реального "железа").
А для работы - не нахватываться языков, да побольше, а погрузиться в один из них всерьез. Написать свою библиотеку на js. Или высоконагруженный проект на go. Так, чтобы прочувствовать язык и получить от него удовольствие, делая сложные вещи просто и естественно.
То есть - побольше руками и головой. А за статьи, хабр и прочее хвататься только тогда, когда не будет хватать информации. Читать - легко...
С асмом я знаком, перед тем как лезть в веб, больше года ковырялся в машинном коде, интуитивно многое в то время понимал, но сейчас это для меня большой плюс и преимущество перед многими разработчиками.
Иван Соломенников: тогда, если потянет на другие языки, "кресты" смело задвигайте в конец списка. Лучше уж Жабу какую-нибудь, у нее свои интересные нюансы по ООП.
Как правильно написали — полезно знать для общего образования и понимания, как оно работает на низком уровне. На практике в веб-деве может пригодится если только для написания нативных модулей — оптимизировать какое-то узкое место, но встречается это довольно-таки редко.
с++ для веба??? наверно некотыре знают php фреймворк phalcon, вот там используеться PHP C-extension вот ссылка на phalcon может здесь что нибудь найдете,
Если вы знаете Go (если не обманываете!) - то зачем вам ещё что-то?
P.S. Go является прямым современным продолжением линейки языков C/C++ (исправляющим то, что в своё время там сделали не самым удачным образом) ... вот в нём и упражняйтесь.
На хабре о нём не лестно отзываются многие, да и мне самому не понравилось что там нету привычного try/catch or try/except. В целом не плох.
Смысл мне обманывать? Он юзается за две недели, после javascript/python уже ничего не страшно.
Иван Соломенников:
Ну, так от частоты и числа повторений глупость меньше же не становится?
Многие страницы авторы Go исписали, очень аргументированно описывая, почему обработка исключений - это зло, почему они её сознательно исключили, и почему она заменена множественным возвратом из функции.
Взяли бы почитали, нет?
А для того, чтобы "мне самому не понравилось" - нужно бы иметь какую-то квалификацию, опыт, профессионализм ...чтобы иметь с чем сравнивать.
Забрал своё мнение обратно насчёт Go. Остаюсь на питоне, слишком уж много каких-то глупостей там. Толи он сырой просто, толи действительно присутствует какая-то идейность.
abcd0x00: Мне тоже больше python нравится, чего не хватает в python лично для меня, так это статической типизации.
В go не хватает привычного try/catch.
Мне не понравились синтаксические ограничения (мне не нужны) и недоразвитость модулей для юнит-тестирования (cunit и то информативнее) и разбора командной строки (взяли POSIX отбросили просто). Питон в этом плане выглядит каким-то суперразвитым, хотя в нём просто есть всё самое необходимое.
P.S. Go является прямым современным продолжением линейки языков C/C++
Не знаю по части Си, но до С++ ему мощей далеко не хватает! Если есть сомнения дам ссылку почитать интересный диалог который начинался с обзора яп, а закончился спорами, там же и затрагивается go.
Не хабр.
Иван Соломенников:
да на кой фиг мне ваш "тематический ресурс" - форумный трёп пустозвонов, которые не понимают ни C++ ни Go, и только рассуждают с видом ... как умные
Иван Соломенников:
Иван, я всегда приветствую любознательность, когда знатоки JavaScript, HTML и CSS рассуждают о достоинствах С++ и Go ... но, как говорил М.Жванецкий:
Хотелось бы обсуждать вкус устриц с теми,кто их пробовал.
Олег Цилюрик: Этот форум аля 2000-е, там такие люди были как Great, Clerk, Vazonez и многие другие, которых знает почти весь рунет, трёпа там никакого нет, там в основном элита низкоуровневого.
на С++ можно только бэкенд.
В особо запущенных случаях, вы можете на С++ написать собственное расширение к apache/nginx, но это крайне редкие вещи.
Ассемблер можно подучить до уровня junior-а, просто чтобы понимать как работает комп, и в artmoney могли бы локальную игрушку взломать. Но это чисто для расширения кругозора.
Практического интереса скорее нет, только что широта кругозора в языках программирования. C/C++ незаменим в таких сферах как низкоуровневое программирование, компьютерная графика с ОpenGL/OpenCL итп. С другой стороны, как-то лет 6 назад, я программировал на js с помощью yahoo библиотеки и у них часть кода (минимизации) просто выглядела (или являлась), переписанным c C кодом. Также интересен новый курс на LLVM -> asm.js, когда код на C++ используется для написания более производительных графических приложений (или игр) в броузере.
с++ во первых просто полезен для понимания устройства системы, напрмиер для вопросов оптимизации. Во вторых, серваки и прочий бэкенд вполне себе на с++ пишутся.
На с++ можно написать модуль, который ускорить узкое место в Вашей программе. В большинстве это касается научных вычислений. Касательно веба - это может быть помочь в highload и, возможно, в 3d графике.
Go простой яп, очень простой, а хочется руками научится работать с garbage collection, с низкоуровневыми штуками, а не просто конструкции готовые юзать, если в лоб, то для собственного роста.
Иван Соломенников: Хочется руками и правильно - Вам в Rust. Тамошняя концепция владения и заимствования очень быстро научит правильно и собственными руками garbage collection. Помимо этого ближе познакомитесь с прелестями функциональных ЯП и тем, насколько изящны могут быть системы типов. После этого и на плюсах сможете пописать правильно, не допуская глупейших, но неочевидных новичкам, утечек памяти и сегфолтов. ИМХО, Rust стоит поучить именно для того чтобы понять и почувствовать на практике концепцию владения и заимствования...это важная концепция, в которую должен уметь каждый уважающий себя программист.