Перейти к содержанию

Какой язык лучше изучать новичку C++ или C# ?


Razi

Рекомендуемые сообщения

1) Какой язык лучше изучать новичку C++ или C# ? Или может вообще Visual Basic или может совсем другой язык? Если спросите, с какой целью изучается язык. Цели приблизительно такие: 1) Для написания программ для своих целей 2) Для взлома игр 3) Для работы. Цель больше для себя, как увлечение, а не серьезная работа. (Знаю, есть темы Master'a GH для новичков. Все же хотелось бы услышать несколько мнений).
2) Хотелось бы услышать также плюсы и минусы определенных языков. Например: C++, C#, Visual Basic, С, Lua. И узнать общее понятие между низкоуровневыми языками и высокоуровневыми.
3) Какие языки больше популярны?

4) Какой вид языков больше популярен, низкоуровневые или высокоуровневые?
5) Хотелось бы услышать советы, как лучше изучать языки новичку?

Ссылка на комментарий
Поделиться на другие сайты

Razi, изучай тот, который лучше понимаешь.А так изучай синтаксис С подобных языков(С++, С#, С, Lua, Java), он почти, во всех сферах программирования крутится.

Я лично могу хорошо читать код, и понимать, с синтаксис С подобных языков(С++, С#, С, Lua, Java), Delphi, Visual Basic, но писать на них, я могу с трудом, мне легче переписать код на PureBasic, чем скачивать и компилировать, с синтаксис С подобных языков(С++, С#, С, Lua, Java), Delphi, Visual Basic.

Ссылка на комментарий
Поделиться на другие сайты

Python -> C/C++ -> Go

Универсальный набор для всех задач. C# не понравился просто потому что сам код выглядит как-то громоздко. Питон удобен тем что на нем и интерфейс можно написать в пару строк и сделать трейнер, и во многих программах используется как основной скриптовой язык.

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

Если судить по мне, то мне тяжело давалось программирование. Как я не пытался понять C++ у меня никак не получилось или мне не везло на книги. Но когда я вот эту книгу, которую посоветовал нам препорд, прочел, то у меня все пошло по нарастающей. Её прочитал когда был на первом курсе универа (1-ый или второй семестр)

Скрытый текст

11519.jpg

Она читается на одном дыхании и не сложно и не особо легко, если вообще о программирование не знал. Процедурное программирование, типы данных, циклы и даже ООП в конце книги. Я эту книгу обожаю, хотя на паскале или Дельфи очень давно ничего не писал

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, partoftheworlD сказал:

Python -> C/C++

Вот тут полностью согласен.

C++ может показаться кому-то тяжелым в изучении, но с ним ты реально сможешь сделать все что душе угодно) Хотя.. мне тоже было его тяжело изучать. Как-то тянул я с ним долго, хотя сейчас много всего понимаю. Но скорее понимание пришло после того, как я начал еще и с отладчиком возиться потихоньку. Тогда вот точно все стало на свои места) Поэтому для геймхакинга C++ самое то - поможет сразу после CE и отладчика попрактиковаться и поработать с памятью и прочей фигней не отходя от кассы.

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

В принципе я думаю после Си/C++ любой язык покажется простым в изучении. Ну, я не имею в виду какие-то хитрые моменты и нюансы - таких у каждого языка вагон и маленькая тележка, но основы ты освоить сможешь быстро. Я просто не очень уверен, что это работает в обратную сторону: от того же Python к C++. После питона или подобных языков с неявной типизацией и прочей мишурой слишком тяжело, наверное, будет восприниматься цпп.

Ссылка на комментарий
Поделиться на другие сайты

34 минуты назад, uhx сказал:

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

 

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

 

4 часа назад, Razi сказал:

5) Хотелось бы услышать советы, как лучше изучать языки новичку?

 

Ну смотри начать с питона стоит потому, он легче, изучишь его уже будет какой-то стимул продолжать учиться, а на С++ дойдешь до указателей, шаблонов и отложишь книгу в дальний ящик, на питоне не надо указывать тип для каждой переменной пиши себе и наслаждайся + за 4 вечера можно уже начать что-то писать на много круче, чем получения списка процессов и чтение из памяти. Для сравнения мне понадобилось около 1.5 недель чтобы сделать тоже самое на C++.

 

C++ тяжелый для изучения и его не стоит изучать по книжке лично мое мнение т.к. в тех что с адекватным описанием по 800+ страниц, это долго и нудно многие на 100 странице забьют и будут писать на VB или C# (имхо в таких языках порог вхождения немного ниже), лучше использовать книгу как справочник, все равно даже если прочтешь её, то все абсолютно не запомнишь, получается трата времени.

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

 

Реверсить примерно так же учился, методом тыка обращаться с IDA, т.к. нет для неё никаких уроков для начинающих, оно возможно и не надо, есть writeup'ы с CTF, либо описание реверса какого-нибудь вируса, но для новичка это слишком сложно.

 

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

 

4 часа назад, Razi сказал:

И узнать общее понятие между низкоуровневыми языками и высокоуровневыми.

 

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

 

Низкоуровневый язык программирования (язык программирования низкого уровня) — язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального (например, Java, Microsoft .NET) процессора. Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка (обычно английских).

 

4 часа назад, Razi сказал:

3) Какие языки больше популярны?

 

https://www.tiobe.com/tiobe-index/

 

 

4 часа назад, Razi сказал:

4) Какой вид языков больше популярен, низкоуровневые или высокоуровневые?

 

 

Высокоуровневый

 

Надеюсь, на все вопросы ответил.

 

Изменено пользователем partoftheworlD
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

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

 

Цитата

…понятно дело, что в конечном итоге можно все к логике ИЛИ-НЕТ или И-НЕТ свести. Народ, а вы в курсе, что уже давно есть объектный ассемблер? А Си — это совсем не макроассемблер. Далековато сишному ехе до ассемблерного и по объему и по скорости. Вот паскаль — это да. Это — круто. Это – офигеть. Си хорош тем, что имеет 7-8 операторов, десяток операций — и все. Его учить — плевое дело. Однако он не для трусов. Си — это свобода плюс ответственность. Почему многие так и остаются на всю жизнь на Паскале? Потому что готовы пожертвовать свободой, лишь бы ответственности поменьше. А у Паскаля настоящий тоталитаризм: шаг в сторону – расстрел. Си – это настоящая демократия. Разгильдяйство и воровство тут не проходит. Однако для людей, скажем так, с совестью – полная свобода. С++ высшая форма демократии (пока что). Ассемблер – это коммунизм. Туда дорога еще меньшему количеству народа, чем в Си. VB – гнилой капитализм. Вот почему: меньше вложить – больше заработать, пару тыков мышой – а у вас офигенное приложение, медленное – значит солидное; и еще для его приложений надо иметь крутую тачку, а крутая тачка — это престижно.

 

Изменено пользователем partoftheworlD
  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

Если что пишите подробнее, на вопросы которые вначале темы.

Вот еще говорили что: объектно-ориентированный язык, сложен сам по себе, проще научиться писать на процедурном языке, а потом браться за объектный. Из чего следует, что C++ легче чем C# ?

Изменено пользователем Razi
Ссылка на комментарий
Поделиться на другие сайты

18 минут назад, Razi сказал:

Если что пишите подробнее, на вопросы которые вначале темы.

Вот еще говорили что: объектно-ориентированный язык, сложен сам по себе, проще научиться писать на процедурном языке, а потом браться за объектный. Из чего следует, что C++ легче чем C# ?

С# тебе легче будет изучить чем с++. Однако на плюсах есть свои небольшие фишки, типо inject dll, asm вставки (в плане геймхакинга) 

Если не хочешь заморачиваться - с# твой выбор

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, partoftheworlD сказал:

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

partoftheworld, а кто это написал? Очень классно написано кстати. Понравилось - сравнение языков через виды общественного строя.

 

ЗЫ: И если что я за ассемблер - коммунизм.;)

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Garik66 сказал:

а кто это написал?

 

Не знаю, статья 12 летней давности автор мыщъх(Крис Касперски) 

 

Цитата

>>> мнение человека с форума


Вот ссылка, если интересно будет почитать.

 

2 часа назад, roma91212 сказал:

asm вставки

 

В C# тоже есть, только идут отдельной библиотекой(FlatAsm Managed) считай тот же Mid hook functiion ..

Пример использования под спойлером.

 

Скрытый текст

var asmLine = new List<string> {
    "pushfd",
    "pushad",
    "mov edx, 0",
    "mov ecx, " + resultAddress,
    "mov [ecx], edx",
    "@loop:",
    "mov eax, [ecx]",
    "cmp eax, " + 80,
    "jae @end",
    "mov eax, " + argumentAddress1,
    "add eax, [ecx]",
    "mov eax, [eax]",
    "test eax, eax",
    "je @out",
    "call eax",
    "mov ecx, " + resultAddress,
    "mov edx, " + argumentAddress2,
    "add edx, [ecx]",
    "mov [edx], eax",
    "mov edx, " + argumentAddress1,
    "add edx, [ecx]",
    "mov eax, 0",
    "mov [edx], eax",
    "@out:",
    "mov eax, [ecx]",
    "add eax, 4",
    "mov [ecx], eax",
    "jmp @loop",
    "@end:",
    "popad",
    "popfd"
};
Memory.Asm = new ManagedFasm(ProcessHandle);
Memory.Asm.Clear();
foreach (var str in asmLine)
{
    Memory.Asm.AddLine(str);
}
Memory.Asm.Inject(HookAddress);
var length = (uint) Memory.Asm.Assemble().Length;
Memory.WriteBytes(HookAddress + length, OpCodes);
Memory.Asm.Clear();
Memory.Asm.AddLine("jmp " + (Address + OpCodes.Length));
Memory.Asm.Inject((uint)((HookAddress + length) + OpCodes.Length));
Memory.Asm.Clear();
Memory.Asm.AddLine("jmp " + HookAddress);
for (var k = 0; k <= ((OpCodes.Length - 5) - 1); k++)
{
    Memory.Asm.AddLine("nop");
}
Memory.Asm.Inject(Address);

 

 

Изменено пользователем partoftheworlD
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

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

Еще интересует рейтинг языков по разным вопросам. Например:

1 рейтинг) на каких языках проще/быстрее всего научиться писать программы?

2 рейтинг) какие языки больше подходят для взлома игр?

3 рейтинг) какие языки больше подходят для работы?

 

Ответ например может быть такой, на первый вопрос: 1) Visual Basic: Вот почему: меньше вложить – больше заработать, пару тыков мышой – а у вас офигенное приложение, медленное – значит солидное; (Исходя из этой фразы значит, что VB наиболее прост для написания программ)

Например ответ на 3-ий вопрос может быть такой: 3) Так как Java и язык C наиболее популярны значит они менее всего подходят для работы по идее.

 

Еще вопрос: Как вы изучаете языки? Пытался читать литературу за компом. Но, за компом читать даже художественную литературу очень сложно, а читать литературу по изучению языков программирования еще в 5 раз сложней.

Ссылка на комментарий
Поделиться на другие сайты

У меня сейчас так:

C# - для прикладного ПО под винду (в основном, программы для анализа данных с определенных устройств)

С++ - для разработки ПО контроллера, лежащего в основе СУЛС (станции управления лебедкой Сулейманова).

Ну и, конечно же, asm x86 для понимания дизассемблированного кода игр.

Ссылка на комментарий
Поделиться на другие сайты

6 hours ago, what228 said:

COBOL :ph34r:

 

Spoiler

O4qnTRLIxGE.jpg

 

И чтобы не оффтопить - я пишу на Python, он действительно довольно прост (устроился на работу прочитав небольшой гайд по языку :D). Самостоятельно в детстве изучал Delphi, очень удобно рисовать формочки, возможно он тоже подойдет как некое начало. Хотя особой разницы в рисовании формочек между Borland C++ и Borland Delphi (тогда еще Borland) не заметил, без понимания "просто в коде точки сменились на ->" (только потом узнаешь про указатели, разименование и т.д.).  Сейчас понемного штрудирую C#.

 

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

 

Just now, Razi said:

НА языке Python можно писать приложения с GUI

 

Можно, есть библиотеки, но мне кажется он под это всё таки не очень заточен, чаще вижу связку Web-морда + бекенд.

Изменено пользователем srg91
Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, srg91 сказал:

Python

 

То-то я смотрю Lua скрипты пишешь. Если на работе — на  Python... :)))

Интересно @SnedS91 тоже на Python, такие регулярки закручивает с легкостью ))

Ссылка на комментарий
Поделиться на другие сайты

13 minutes ago, MasterGH said:

То-то я смотрю Lua скрипты пишешь

 

ага, скриптовые языки, в чем-то схожи, удобно ) 

 

к слову о регулярках, есть хорошая книжка - Джеффри Фридл - Регулярные выражения (Mastering Regular Expressions). 

Она небольшая, в целом о теории регулярок, но не слишком углуб ляясь. После нее понимаешь как ими мыслить, становится попроще :)

 

К слову, @MasterGH, если можно задать нескромный вопрос - а как ты изучал C#? Особенно в разрезе с Unity? :)

Изменено пользователем srg91
Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, srg91 сказал:

Джеффри Фридл - Регулярные выражения (Mastering Regular Expressions). 

Прикольно, надо будет почитать. Я часто костыляю с парсерами. Полезна. "Perl, PHP, Java, Python, Ruby, MySQL, VB.NET, C# (и других языках платформы .NET). Регулярные выражения позволят вам автоматизировать сложную и тонкую обработку текста. "

9 часов назад, srg91 сказал:

К слову, @MasterGH, а как ты изучал C#? Особенно в разрезе с Unity?

C# я учил для работы с базами данных. Либо как софт (wpf), либо как веб (asp.net, silverlight). Книги, справочники, блоги, форумы. Собеседования, вакансии, что хотят работодатели, что я умел, что не умел... Пока я искал работу предложили работать с Unity временно и затем на постоянку у ИП. Начал и все пошло. Я удивлялся как все двигалось по физике, как рисовалось и все на C# и зарплату платят. Все нравилось. Все само запоминалось или записывал. Потом где-то через 4 года пошел в игровую студию. Работаю в ней уже второй год, а компании года три. Молодой коллектив в основном и компания по разработке игр начинающая. Я пришел в очень молодую компанию и мы растем. Я надеюсь будут игры, которые будет не стыдно показать. Пока то, что мы делаем хоть и имеет в сумме десятки миллионов установок, а то и сотни, если сложить разные сторы и маркеты, но пока игры очень короткие и по качеству не конкурируют с известными игровыми студиями в Новосибирске, я уже молчу про еще более известные.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, srg91 сказал:

Можно, есть библиотеки, но мне кажется он под это всё таки не очень заточен

То есть для Python есть почти такая же удобная среда программирования как Visual Studio для C# ?

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

Ссылка на комментарий
Поделиться на другие сайты

8 минут назад, Razi сказал:

То есть для Python есть почти такая же удобная среда программирования как Visual Studio для C# ?

Есть удобней pyCharm с отладкой и всякими плюшками. Хотя вроде в VS тоже можно было юзать питон.

 

complexLook@2x.jpg

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.