Твой софтовый форум > Тематические форумы > Программирование

Программирование на С++

,

помогите научиться..

Дата публикации: 12.10.2018 - 00:39
Pages: 1, 2
nokeMoH
Добрый вечер, у меня есть странная затея, которая интересна пожалуй будет только мне одному, но не смотря на это, под себя, я бы хотел Создать определённую программу, чья работоспособность бы имела около 10-15 разных функций (поиск, замена, сравнение и т.д)..

Назначение утилиты я продумываю не как работу с текстом, а работу непосредственно с Кодом файла (всеми значениями от 00-ff), то есть хочу сделать что-то вроде Hex-редактора, чтобы Утилита открывала файл, меняла одни нужные мне значения на другие, искала позиции определённых символов, относительно их делала какие-то последующие операции...

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

Просмотреть весь доступный материал у меня просто не хватит на это время физически, и затем вычерпнуть из него только то, что мне действительно нужно, мне было бы проще Задать вопрос, и получить на него ответ.. Сам принцип программирования я вроде уловил (написания программы), устанавливается нужная Среда программирования, а в ней просто чередуется последовательность определённых кодов, значений, функций, которые в последствии компилируются в *.exe файл... Так вот помощь с этими Кодами мне и нужна только..

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

Если кто-то отзовётся, то у меня сразу есть первый вопрос.. Я узнал, что языков программирования оказывается уже существует более 8.000 штук, к моему удивлению, я думал штук 10 их всего, потому что на слуху столько.. Для меня самое важное и первостепенное - СКорость РАботы ПРограммы в той области применения, о которой я писал в первом и во втором абзацах.. Пусть программа занимает места на компьютере большего объёма чем должна была бы, пусть подъедает побольше RAM, пусть ещё что-нибудь, но чтобы Большой Жирный Плюс всегда был в сторону её Скорости Работы.. А вопрос такой, из всех сред программирования, я правильно определился с тем, что нужно мне это делать именно на C++ или нет ?..
Henry723
Java - лучше попробуй на ней... smile.gif
nokeMoH
Советуете попробовать на Java потому, что её знаете сами и сможете подсказать как реализовать программу с помощью её кодов ?, или же знаете разницу между С++ по этому и советуете Java ?..

Я бы конечно ради интереса приложение создал бы на разных средах программирования, если появиться такая возможность, и проверил бы каждую из них на быстродействие, мне нужна утилита, которая бы работала с файлами разных размеров, от 1 MB до хотя бы 1 GB, а если и больше 1 GB раза в 2-4 получиться то даже и лучше будет, а если и меньше, до 400-500 MB получиться реализовать, то ни чего страшного, буду разбивать файлы на необходимые куски размера и обрабатывать каждую часть по отдельности, потом соединять их обратно в один большой кусок..

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

Я буду рад любой помощи по принципу Вопрос-> Ответ ,, так как я не хочу научиться всеобъемлющему программированию, а мне интересны исключительно только конкретные цели (работать с Шестнадцатеричным кодом файла в диапазонах от 00 по ff, поиск символа, их замена, их позиционирование, зависимость одного символа от другого, и немного остальных прочих условий).. Я знаю про существование Hex-редакторов с поддержкой скриптов, мне это не подходит, там не всё можно сделать что мне нужно.. По этому...

Я буду рад любой помощи по принципу Вопрос-> Ответ
AquaTour
1) С++ как язык для обучения программированию так себе, он слишком сложный. Конечно могут набежать те, кто скажет что ничего сложного там нет, но не факт, что они смогут с легкостью ответить на несколько вопросов почему кусок кода на С++ работет так, а не иначе
2) Оптимизировать скорость можно только понимая, как работает программа, классический пример, что будет быстрее, обход матрицы по строкам или по столбцам и почему?
3) Обработать файл в несколько Гб нет проблемы, какую скорость обработки будем считать приемлемой?
4) Для того, чтобы спрашивать конкретной помощи, хорошо бы тщательно сформулировать вопросы.
5) По принципу вопрос-ответ и работает stackoverflow.com, хочется программировать - этот сайт в закладки.
6) Скрипты скорее всего могут сделать все что нужно, не может пользователь. Но это не точно.
6) Ну и язык - C# rolleyes.gif
nokeMoH
AquaTour, спасибо..

1) Из всех просмотренных мною роликов за последние дни по С++, пока не ощущаю такой сложности как об этом могут сказать, я конечно ни чего сам не умею, но у меня сформировалось такое мнение - что умение программировать - это просто знание нужных кодов и их применение, от сюда вытекает следующее, другой Язык Программирования - просто другие коды на те же самые операции, очевидно, что где-то должны быть уникальные коды, по функциональности, где-то коды, делающее одно и тоже...
2) Я точно пока не могу знать ответа на этот вопрос(..
3) Приемлемая скорость работы - максимально высокая, так как я решил замахнуться на файлы большого объёма.., разумеется для того, чтобы сократить Время обработки файла..
5) Спасибо, запомню его и уже сохранил, буду обращаться по случаю.. Надеюсь с переводчиком языкового барьера возникнуть не должно..
6) smile.gif
7) Я не знаю чем отличаются языки [C], [C++] и [C#] друг от друга, но на слуху почему-то С++, что он мол самый лучший, по этому им и начал интересоваться..


4). Если начать с малого, то хотел бы поинтересоваться, Какой софт для программирования посоветуете ?, вероятней всего одну из последних версий, так как в них должно быть больше сокращений (команд), это я из роликов запомнил..

Хотелось бы, чтобы будущая Созданная программа умела работать на Системах WinXP, Windows 7, Win8.1 ну и Win10 разумеется, x32 и x64 редакциях разумеется, если это имеет какое-то значение при выборе метода программирования...

Цель проекта - полноценная работа с Шестнадцатеричным кодом файла в диапазонах от 00 по ff ,, то есть с любым его значением от 0 до 255 включительно, поиск символов, замена одного на другое при разных условиях, вставка определённого символа в нужное место, тоже по условию, все операции расписать сразу тяжело, это по ходу движения поезда только получиться сделать..

С чего посоветуете начать чтобы можно было потихонечку начинать приступать к работе ?.. Какой-то софт для программирования...
kostya-chist
Цитата | Quote(nokeMoH @ 8.10.2018 - 17:25)
но у меня сформировалось такое мнение - что умение программировать - это просто знание нужных кодов и их применение

Крайне ошибочное мнение.
Почитайте Дональда Кнута "Искусство программирования"
Цитата | Quote(nokeMoH @ 8.10.2018 - 17:25)
от сюда вытекает следующее, другой Язык Программирования - просто другие коды на те же самые операции, очевидно, что где-то должны быть уникальные коды, по функциональности, где-то коды, делающее одно и тоже...

А вот конкретный язык программирования выбирается в зависимости от задач, знаний и умений.
Цитата | Quote(nokeMoH @ 8.10.2018 - 17:25)
Хотелось бы, чтобы будущая Созданная программа умела работать на Системах WinXP, Windows 7, Win8.1 ну и Win10 разумеется, x32 и x64 редакциях разумеется, если это имеет какое-то значение при выборе метода программирования...

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

OffTop: C таким подходом к программированию получаем то, что имеем, т.е. индийский код.
AquaTour
Цитата | Quote(kostya-chist @ 8.10.2018 - 18:11)
Почитайте Дональда Кнута "Искусство программирования"
*

крайне ошибочный совет. Сам то читал? wink.gif Помогло? Не надо учить физику с квантовой механики, результата не будет.
Цитата | Quote(kostya-chist @ 8.10.2018 - 18:11)
C таким подходом к программированию получаем то, что имеем, т.е. индийский код.
*

в данном случае это не критично, топикстартер хочет решать свои задачи, т.е. писать код для себя, а не для других.
AquaTour
nokeMoH,
1) Если задача состоит в складывании двух чисел, то да, код будет относительно простым на всех языках, только на С\С++ он все равно будет сложнее.
Вот тут есть пара примеров кода, понятно что происходит? Амперсанды, звездочки, квадратные скобки, за время, которое понадобится для более менее спокойного чтения и понимания этого кода, вполне можно самостоятельно написать решение на другом языке.
3) С такой постановкой работать нельзя. Действительно критична разница в пару секунд на гигабайтном файле? Вся жизнь состоит из компромиссов, программирование не исключение. Определитесь со своими потребностями и сколько ресурсов (времени например) готовы потратить на то, чтобы выиграть лишнюю секунду. Сразу скажу, что стоимость оптимизации лишней секунды может вылиться в часы работы над программой, готовы?
Не менее важно помнить о том, что в первую очередь надо оптимизировать алгоритм, а не код.
7) С/С++ неуправляемые языки, т.е. в общем случае работать с памятью придется вручную, выделять, освобождать, обращаться по указателю, вообще без понимания работы с указателями в этих языках ловить нечего, C# это управляемый язык, т.е. среда выполнения сама следит за памятью и работа с указателями в управляемых языках не является необходимостью, хотя и возможна. В целом C# проще как язык, Java задумывалась как очищенная версия C++, C# это очищенная версия Java, хотя в дебри можно и в нем залезть.
4) Задача рядовая, решается на любом языке. Нужно попробовать выделить одну мелкую задачу и разбить ее на подзадачи, действуя таким образом до "атомарных" команд, т.е. грубо говоря чтобы каждой подзадаче можно было поставить в соответствие строку кода, после остаётся собрать эти строки вместе и задача решена.

Цитата | Quote(nokeMoH @ 8.10.2018 - 17:25)
WinXP, Windows 7, Win8.1 ну и Win10 разумеется, x32 и x64
*

собственно трудности в этом особой нет, другое дело, что программы для своей работы часто требуют библиотеки, которые используют, их может не быть в целевой системе и потребуется их установка, названия у библиотек самые разные c++ redistributable, .net framework, java runtime, суть одна.
Для неуправляемых языков можно решить задачу, если таскать библиотеки рядом с программой.

Код пишут либо в IDE, либо в текстовом редакторе. Мне в IDE проще, выбор IDE зависит от языка, я использую Visual Studio и Visual Studio Code, работал бы я с другими языками, выбор IDE был бы другим.
nokeMoH
Цитата | Quote(AquaTour @ 8.10.2018 - 20:13)
1) Если задача состоит в складывании двух чисел, то да, код будет относительно простым на всех языках, только на С\С++ он все равно будет сложнее.
Вот тут есть пара примеров кода, понятно что происходит? Амперсанды, звездочки, квадратные скобки, за время, которое понадобится для более менее спокойного чтения и понимания этого кода, вполне можно самостоятельно написать решение на другом языке.

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

Цитата | Quote(AquaTour @ 8.10.2018 - 20:13)
3) С такой постановкой работать нельзя. Действительно критична разница в пару секунд на гигабайтном файле? Вся жизнь состоит из компромиссов, программирование не исключение. Определитесь со своими потребностями и сколько ресурсов (времени например) готовы потратить на то, чтобы выиграть лишнюю секунду. Сразу скажу, что стоимость оптимизации лишней секунды может вылиться в часы работы над программой, готовы?
Не менее важно помнить о том, что в первую очередь надо оптимизировать алгоритм, а не код.

Мм, я ожидал что разница при работе с такими внушительными габаритами может быть крайне высокой, ну там скажем 1 GB бы обрабатывался в одном случае за 15 минут ,, в другом случае 30-45 минут, разница была бы очевидна конечно, и эту проблему нужно было бы решать, ну а если такая разница будет выделяться только Парой секунд, думаю ни чего страшного тут нету, даже и минуту другую можно было бы перетерпеть, но не излишних 20-30 минут.. Как Вами уже было замечено ранее, делаю утилиту под себя, по этому по большому счёту сырой, !но рабочий вариант меня бы вполне устроил, но тем не менее, в будущем, я не оставлю попыток сделать ещё лучше, сразу к идеалу стремиться сознательно не хочу, с моими знаниями не получиться, возможно в каком-то из будущих, я бы смог с помощью или без ,, как-то сделать лучше, но это потом и не сразу, а "сырой" вариант всё равно тоже нужен, чтобы было с чем работать.. Да, над алгоритмом я думал долго и всё продумал до мелочей, ну может где-то и осталась какая-то заноза, не всегда всё получается с первого раза, старался сосредоточиться на минимум операций до достижения намеченной цели..

Цитата | Quote(AquaTour @ 8.10.2018 - 20:13)
Цитата | Quote(nokeMoH @ 8.10.2018 - 17:25)
WinXP, Windows 7, Win8.1 ну и Win10 разумеется, x32 и x64
*

собственно трудности в этом особой нет, другое дело, что программы для своей работы часто требуют библиотеки, которые используют, их может не быть в целевой системе и потребуется их установка, названия у библиотек самые разные c++ redistributable, .net framework, java runtime, суть одна.
Для неуправляемых языков можно решить задачу, если таскать библиотеки рядом с программой.

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

Цитата | Quote(AquaTour @ 8.10.2018 - 20:13)
Код пишут либо в IDE, либо в текстовом редакторе. Мне в IDE проще, выбор IDE зависит от языка, я использую Visual Studio и Visual Studio Code, работал бы я с другими языками, выбор IDE был бы другим.

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


---------
------
---------
----


Первое, с чего бы мне хотелось научиться и начать, это вот что:

1). Что скачать и установить для программирования..

2). В моём алгоритме, любой файл, какого бы он не был размера, обработка всегда будет Подвух-байтной, но в связке по 8 Байт, сейчас объясню, то есть (начало Алгоритма) имеем грубо говоря файл размером в 8 байт, и в процессе его Полной обработки, утилита Сначала обрабатывает Первые 2 байта до определённого результата, результат обработки первых двух байт она должна будет запомнить либо у себя в голове, либо в каком-нибудь временном файле который будет создаваться, этот результат нам ещё понадобиться.. Затем переключается на следующие 2 байта, то есть на 3 и 4 уже по счёту получается.. Соответственно результаты обработки 3 и 4 байта тоже необходимо будет запомнить, а затем, провести определённые манипуляции с Обоими Результатами, каждый из которых мы получили в процессе обработки 1 и 2 байта, так же и 3 и 4 байта.. Только обработав эти два результата, так же, определённым алгоритмом, мы в итоге получим Первое значение.. Затем проделываем ВСЁ тоже самое с 5 и 6 Байтами, и 7 и 8 Байтами, в конце получаем Второе значение.. Далее обрабатываем Первое и Второе значение ещё одним алгоритмом и получаем Конечный Результат, его то и нужно будет записать в конце в Файл, на выходе который мы и получим..(конец Алгоритма) Вот что я имел в виду когда говорил в связке по 8 Байт, но Подвух-байтно.. Алгоритм на этом закончен, и в дальнейшем мы переключаемся на следующие 8 Байт, делаем всё тоже самое и так же в конце должны зафиксировать получившееся значение, записать его в файл...

Затея действительно у меня весьма дурная, но мне это действительно очень нужно, и по этому я прошу у Вас помощи..

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

Буду следовать всем Вашим инструкциям.. Скажите пожалуйста:

1). Какой конкретно Софт для программирования и какой версии мне необходимо установить, чтобы потихонечку было бы можно приступить к работе ?.. У меня Win7 x32 ,, но есть чистый новый мощный ПК, куда я могу установить что-то другое если этого будет требоваться..
AquaTour
Цитата | Quote(nokeMoH @ 8.10.2018 - 22:24)
Мм, я ожидал что разница при работе с такими внушительными габаритами может быть крайне высокой, ну там скажем 1 GB бы обрабатывался в одном случае за 15 минут
*


1 Гб в 2018 году это совсем не внушительный объем, его можно весь загрузить в память и там обрабатывать, а с учетом того, что результат будет в 4 раза меньше, то и результат формировать в памяти. Кмк в таком алгоритме, самой медленной частью будет чтение и запись файла.

Цитата | Quote(nokeMoH @ 8.10.2018 - 22:24)
Я не против этого, запихну в папку с утилитой всё что потребуется для её работы по возможности, чтобы она всегда смогла бы работать на Чистой системе..
*

под такие условия попадает только С\С++, ну либо ждать .net core 3.0, но в нем точно не будет XP и будут поддерживаться только обновленные версии win 7, 8.1, win 10, в принципе можно почитать какой .net framework установлен по умолчанию в системе и ориентироваться на него.
Цитата | Quote(nokeMoH @ 8.10.2018 - 22:24)
Я текстовый редактор не осилю (если это блокнот)
*

блокноты бывают и с подсветкой синтаксиса, но в IDE удобнее, да.
Цитата | Quote(nokeMoH @ 8.10.2018 - 22:24)
Что скачать и установить для программирования..
*

если устроит вариант C\C++ или C#, то устанавливать Visual Studio 2017 Community Edition _ttps://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=15
При выборе компонентов выбрать нужные, нет смысла ставить больше чем потребуется.
Pages: 1, 2


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке: Программирование на С++
SoftoRooM © 2004-2024