Sup двачик, на какой стул сесть? Планирую написать маленькое приложение для бекапирования файлов в реальном времени, на свой ЦОД, планирую высчитывать хеши файлов, и если хеш отличается от текущего, файл перекачивается на мою файлопомойку. Люблю старый код, поэтому C# .NET не советуйте.
>>311901057 (OP) Си конечно. Ты в курсе, что ассемблер - это не язык, блять? Название книги максимально кликбейтное. Ассемблер разный для каждой архитектуры и процессора. Да и сами "ассемблеры" разные бывают. Не лезь короче, оно тебя убьет
Я бы ради интереса написал на асме просто чтобы написать. Но вообще нет смысла, есть rsync который разрабатывается уже 100 лет и лучше ты вряд ли сделаешь, очень много подводных камней, хотя на первый взгляд может показаться просто.
>>311902148 Там прямо написано, > Ассе́мблер (от англ. assembler — сборщик) — транслятор программы из текста на языке ассемблера в программу на машинном языке. А язык ассемблера - это не язык по факту, это просто набор инструкций настолько низкого уровня, что под каждый проц свой "язык". Ты почему думаешь, си компилируемый? Вот поэтому.
>>311902193 Потому что ассемблер разный, а вот код и сама программа одна.
>>311901057 (OP) Главное чтоб ЖОПА ВЫДЕРАЖАЛА. Не случилось отвал прямой кишки. Если да. То Ассемблер. На нем можно писать вирусы и прикладные вещи. Но лучше С++
Моё мнение: лучше уж пиши на си, если хочешь поиграться. Кстати, на какому уровне бэкапы хочешь: все байты как блочного устройства? Или на уровне файловой системы?
>>311902095 >Ты в курсе, что ассемблер - это не язык, блять? Это тебе на скилбоксе раскали? С каких пор ассемблер - не язык. Вон NASM возьми он кросплатформанный, ещё и с богатым макропроцессором. Помоему ты не понимаешь что говоришь. Ассемблер как раз для этого и нужен, чтобы заменять набор машинных команд процессора, на слова типо mov, push, lea. Как раз ассемблер намного более кросплатфорсенный чем С. Вообще, чем более низкоуровневый язык тем он проще портируется. Ассемблер до сих пор нужен для голого железа. Ну а опу действительно наверное С подойдет.
>>311905952 >более кросплатфорсенный чем С Вряд ли. Одно и то же, по сути. Сисколлы и аби всё равно на разные на разных осях. Не получится ассемблреный листинг собрать на одной платформе и на другой без проблем
На Си, конечно. На Асме такое писать это стрельба из пушки по воробьям. Сейчас Асм нужен для реализации всяких алгоритмов там где нужно выжать максимум, у тебя такой задачи не стоит, значит делать на Си.
>>311906119 >Я так понимаю до гуи там далеко? Нет, почему. Можно написать и гуй на ассемблере. Всё что можно написать на языках высокого уровня, можно написать и на ассемблере. Просто так не принять делать по двум причинам: 1)Код больших программ на ассемблере неизбежно станет нечитабельным. Да уже когда реализуют "средние" программы код уже становится не особо понятным. Так что ассемблерный код всегда стараются делать маленьким, чтобы его можно было понять. Непонятный код = бесполезный код. 2) Шанс ошибок и неоптимальных решений резко возрастает. Скорее всего, большая программа на асемблере будет тормозить, просто потому что человек - не оптимизатор С, человек пишет как ему кажется логично, а не как оптимально. Поэтому большой асм-код - вредно. Так что особого смысла писать на ассемблере нет. Только ради практики если.
Низкоуровневые языки вообще довольно прикольные. У каждого наверное был или есть период в жизни, когда ему очень приятно повозится с байтиками и указателям. Почувствовать полный контроль над своей программой.
Кстати, ОП, переберал бы клаву да помыл. Я каждый год клаву замачиваю в тазу со стиральным порошком и отмываю каждый клавишу и корпус от сала.
>>311906471 Си говно потому что нельзя написать бутлоадер на нём, chs нельзя нельзя непосредственно обращаться к магнитной головке диске, системные прерывания прерывания биос тоже нельзя, значит си это урезанное говно.
>>311906943 Все прошивки писали на С, сейчас С++. Опыт. Какое напряжение подать и на сколько секунд, и твоя магнитная головка перейдет на нужный сектор.
>>311901057 (OP) > C# .NET Эта хуйня память жрет как потерпевшая, на маленьких системах тупа кал собаки. Перешел на go, заебись язык, программки не падают вообще, хотя ранее обсирались от особенностей пинукса и хардваре.
>>311902337 ты идиот, любая система кроме аналогов freeRTOS не реального времени, да и сомневаюсь что ты юзаешь на сервере экспериментальное rtos linux ядро. реальное время означает возможность прервать исполнение кода программы через хардварное прерывание на ядро. тик операционной системы 5 мс или сколько я хз. что тебе мешает в фоне по кругу считать хэши в лоу приоре и все это через башовый скрипт, без костылинга и прочей дичи?
>>311907203 Микроконтроллер жесткого диска имет свою "ОС" прошивку, свой процессор, свою память. И все это крутится я так думаю на адской смеси ассеблера и С.
>>311907328 >>311907365 Эсли вам нужно написать собственный аллокатор памяти чё вы будете делать? Я вам уже сотни примеров привел, что на Си не написать, а вы говорите, что это всё не надо.
>>311907203 >>311907328 Так в С же ассемблерные вставки есть? Просто прерывания - сами по себе вещь низкоуровневая, и пихать её в С как часть синтаксиса - наверное некрасиво. Но есть же асм вставки для этого. Сам себе сисколы и реализуй блеядь.
>>311907377 Пробовал раст, не очень понравились мне эти &&&&&&& в каждом углу. Еще и из-за бизапаснасти хуй нормально с объедками поработаешь, без пъердоллинга. Да и в го рефлексия и интерфейсы есть. Безопасность, конечно, хорошо, но ее должно быть в меру как в го например.
>>311906345 ассебли нужен только для того, чтобы написать комплиятор сишки, и все. реверс-инжиниринг это уровнь богов поэтому большинсту людей он не нужен. программа написанная на си и на командах будет весить одинаково и исполняться одинаково. а из си можешь хоть обмазаться авх инструкциями. а супероптимальные алгоритмы это не асембли это всякие интеловские HPC компиляторы для фортрана и си
>>311907426 Да всмысле не написать? Malloc это функция. Это не операция. У С нет "стандартной" библиотеки на самом деле. Если ничего не подключать, то олдовые компиляторы типо С, ничего в твою программу и нк включат кроме прямой трансляции синтаксических конструкций в машинный код. Поэтому С и низкоуровневый, потому что он практически как ассемблер напрямую однозначно определяет машиный код. Помоему некоторые компиляторы этот порядок нарушают типо gcc, но это как бы и не канон.
>>311901576 >вряд ли получится оптимальнее, чем компилятор си сделает Я когда понижал частоту ARM контроллера, чтобы ловить синхроимпульс, цикл for нахуй выкинул, поглядев, что там в ассемблере и заменил своей ассемблерной вставкой. НО! В целом ты прав, обычно компилятор знает лучше теба.
>>311906133 Оно работает как что-то, что ты можешь увидеть, если идой разберешь прогу, скомпиленную на си (спойлер, прога из одной строчки а = 2 + 2 будет иметь порядка 200 функций и десяток подключенных библиотек, это связано с особенностями динамической загрузки в х386 ос, возможно в досе они меньше)
>>311902643 Если тебе очень нужен реалтаймовый rsync, то, скорее всего, ты что-то делаешь не так, и подобную задачу лучше решать более подходящими для этого средствами.
Люблю старый код, поэтому C# .NET не советуйте.