• Как преобразовать любой файл в картинку png?

    Griboks
    @Griboks
    SOTVM, не имеет значения, какого размера файл. В любом случае можно создать картинку.
    У вас есть 3 варианта подмены/генерации (в порядке убывания сложности и возрастания скорости):
    1) использовать кодовый кодер/декордер, но подменить пиксели (это долго, требует много ресурсов, но проще всего; уже кто-то дал ответ на C#)
    2) использовать архиватор, но подменить коэффициенты (извлечь из архива данные и подменить их; вам надо знать алгоритм сжатия)
    3) просто подменить байты в файле (подменить данные в архиве; вам надо знать позицию данных, чтобы просмотрщик картинок смог их показать, но это самый быстрый и менее затратный способ)
  • Можно ли изучать два языка программирования одновременно?

    Griboks
    @Griboks
    DmitrijP, ничего не понял. Вы утверждаете, что я нацист? Или фашист? Или служу четвёртому киберрейху?

    Систематическое унижение нубов не есть признак шутки или аналогии. Я тоже могу сказать, что, если вы не можете получить id строки из html таблицы, то вам не следует заниматься html. Вы, возможно, даже обидитесь и не прислушаетесь ко мне. Поэтому я и предупредил автора, что, несмотря на такое отношение, ответ макдональда мне нравится, я с ним согласен.
  • Можно ли изучать два языка программирования одновременно?

    Griboks
    @Griboks
    DmitrijP, наверное, вы слишком мало времени на тостере. Зайдите в его профиль и убедитесь самостоятельно. Иногда складывается впечатление, что он тут работает.

    мы не должны разжёвывать им инфу

    В том то всё дело. Если вы не хотите отвечать, то не отвечайте. Вовсе необязательно писать какой-то бред или несмешно шутить. Это всё-такие не вписка на хате, а сообщество незнакомых и, надеюсь, образованных людей. Это просто неприлично с моей личной точки зрения.
  • Можно ли изучать два языка программирования одновременно?

    Griboks
    @Griboks
    KerimKalashov, рональд макдональд знатный троль, но в данной ситуации он, на мой взгляд, прав. C++ давно уже устарел и не несёт в себе никакой пользы, если вы не собираетесь работать программистом C++.
    Вся "классика" учится пару дней, максимум недель, и никак не связана с плюсами, как и игры.
    Если хотите делать игры - учите базовые навыки владения C#, а затем сразу Unity 3D.
    Если хотите разобраться в "классике", учите архитектуру и строение компьютера, а не язык. Язык - это следствие.
  • Как разница между объектами первого класса и функциями первого класса?

    Griboks
    @Griboks
    Аналогично тому, как грузовик является видом автомобиля.
  • Какие вы знаете удобные сервисы для общения IT-разработчиков на технологии blockchain?

    Griboks
    @Griboks
    xmoonlight, ххахахаха. Я прочитал - такого не написано. Возможно, я просто не нашёл. Не поделитесь ссылкой?
  • Какие вы знаете удобные сервисы для общения IT-разработчиков на технологии blockchain?

    Griboks
    @Griboks
    Андрей, почему же я не вижу вашего ответа со списком полезных и удобных блокчейн-сервисов?
    xmoonlight, никогда об этом не слышал. У вас есть какое-нибудь подтверждение/описание этой технологии? Что такое тор-сеть? Как она связана с блокчейном?
  • Что будет в геймдеве с Flash после его закрытия?

    Griboks
    @Griboks
    Dexelio, да, можно. Поэтому вы не видите хороших браузерных игры - их уже перенесли.
  • Что будет в геймдеве с Flash после его закрытия?

    Griboks
    @Griboks
    Dexelio, дело в том, что писать игру на js = отдавать исходный код каждому игроку бесплатно. Это просто невыгодно.
    https://www.pixijs.com/
    phaser.io
    И это ещё не говорим о том, что в браузер никто не играет. Тут проблема не в языке, не в движке, а в рынке. Те, кто раньше играл в браузере, сейчас играет в телефоне.
  • Что будет в геймдеве с Flash после его закрытия?

    Griboks
    @Griboks
    Dexelio, ну... печально, что вы не можете такое сделать. Надо учиться.
  • Стек и куча (память)?

    Griboks
    @Griboks
    Максим Мосейчук, всё-равно не уверен. Если это правда, то мой ответ не подходит к этому вопросу.
  • Стек и куча (память)?

    Griboks
    @Griboks
    Максим Мосейчук, Не уверен, что речь шла об аппаратном стеке. В тегах указано именно программирование, а решением отмечен текст про программный стек.
  • Стек и куча (память)?

    Griboks
    @Griboks
    Максим Мосейчук, Вы не поняли, мы с вами говорим об совсем разных сущностях. Почему вы продолжаете мне рассказывать про строение аппаратного стека? Я не знаю его устройство. Я знаю устройство программного стека и я пишу исключительно про него.
    Речь не идет о макроассемблере.

    Именно, речь идет об оверхеде. Он есть в ассемблере. Точнее: утверждение, что любой ассемблер для любого процессора любой архитектуры даёт биекцию между командами и опкодами, неверно. Это утверждение опровергается контрпримером. В качестве контрпримера можно использовать виртуальную машину.
  • Стек и куча (память)?

    Griboks
    @Griboks
    Максим Мосейчук,
    выделение и освобождение памяти в стеке это изменение одного регистра, один такт.

    Мы с вами говорим об совсем разных сущностях.

    Да неужели?

    Между ними есть биекция.

    Макроассемблер (от греч. μάκρος — большой, обширный) — макропроцессор, базовым языком которого является язык ассемблера.
    Возможно, конкретно в вашем ассемблере на вашем компьютере с конкретно вашей архитектурой есть биекция. Но не у всех всё так просто. А когда дело доходит до виртуальных машин, всё становится ещё сложнее.
  • Стек и куча (память)?

    Griboks
    @Griboks
    Максим Мосейчук,
    В чем разница?

    В том, что на машинном коде я могу написать программу без call, без автоматических действий и прочего. Только тот минимум, который необходим. С тем оптимизациями, которые уместны или недоступны верхнему уровню.
    Число операций для доступа к 'a' в обоих случаях одинакого.

    struct stack
    {
        char *data;
        struct stack *next;
    };

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

    Вы спрашиваете про адрес. Затем вы говорите про физический носитель. Так адрес или носитель? Вы уж определитесь.
  • Стек и куча (память)?

    Griboks
    @Griboks
    Максим Мосейчук,
    Т.е. когда вы будете в куче выделять память, то оверхеда не будет?

    Да, будет, ещё больше в большинстве случаев. Но я сравниваю не с кучей, а с программой без call. Т.е. если бы вы писали на машинном коде, у вас бы программа работала бы быстрее, чем на ассемблере. Соответственно, если мы говорим про одну высокоуровневую операцию, то вполне реалистичен случай, когда возникает оверхед из-за подобных особенностей трансляции на низкий уровень.

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

    Обязательно. В противном случае, эта абстракция называлась бы по-другому.

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

    Если вы говорите про такты как про электрические импульсы, а не шаги выполнения машинного кода, тогда всё ещё проще. Одна команда выполняется за несколько тактов, состоит из нескольких микрокоманд, которые выполняются за 1 такт.

    Раз это такая же память, то как получить адрес регистра?

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

    Griboks
    @Griboks
    Максим Мосейчук,
    О каком оверхеде вы говорите?

    Процессор выполняет следующие действия при вызове подпрограммы:
    1. сохранить текущую позицию управления
    2. передать управление подпрограмме

    Затем выполняется какой-то код. Далее следует "return":
    1. загрузить предыдущую позицию управления
    2. передать управление этой позиции
    3.* Почистить локальные переменные (не всегда)
    4.* Вернуть какое либо значение (не всегда)

    Получается, что оверхед по командам составляет минимум 2х, а по времени - минимум 4х.

    Вы о каком стеке говорите то?

    Стек - это ограниченная по длине последовательность ячеек памяти заданной размерности. Для стека определены две операции:
    1. Добавить ячейку в начало последовательности
    2. Удалить первую ячейку последовательности и получить её значение

    Пусть наша подпрограмма использует стек длины L. Допустим, что мы обновили программу и начали использовать стек длины 5L. Тогда получаем, что на придётся выполнить минимум в 5 раз больше операции на стеке, следовательно, в 5 раз больше времени на это потратить. Предположим, что реально из-за ветвлений программы используется лишь 1/5 стека. Тогда оверхед составит 4L.

    Рассмотрим большую переменную, которая занимает N ячеек памяти стека. Тогда все операции с переменной занимаю тоже в N раз больше времени.

    Я знаю что такое микрокод.

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

    Куда уж быстрее, чем один такт? Полтакта? Компьютеры так не работают.

    Стек - это... ну я уже выше написал. Он никак не привязан к тактам, регистрам или чему-то ещё. Это абстракция. Куча - это тоже абстракция. Кстати, регистры - это тоже своего рода физическая абстракция, т.к. для процессора регистры являются такой же памятью, как и l1,l2,l3,ram,ПЗУ.
  • Стек и куча (память)?

    Griboks
    @Griboks
    Максим Мосейчук,
    Что простите? Ассемблер это просто человекочитаемый машинный код.

    Ассе́мблер (от англ. assembler — сборщик) — транслятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.
    Также результатом ассемблирования может быть не исполняемый, а объектный модуль... в дальнейшем с помощью редактора связей может быть получен исполнимый файл.

    Каждая строчка на ассемблере однозначно кодируется машинной командой с точностью до смещений.

    Например, команда call вызывает процедуру, и транслируется в несколько инструкций (операций). Даже если подобные инструкции однозначны, они дают оверхед.

    Вы так и не объяснили, почему большой стек медленнее маленького?

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

    Какие ваши доказательства?
    Один такт это одно переключение транзистора.
    Как можно сделать какую-то работу, не переключив ничего?

    Микроко́д — программа, реализующая набор инструкций процессора. Так же как одна инструкция языка высокого уровня преобразуется в серию машинных инструкций, в процессоре, использующем микрокод, каждая машинная инструкция реализуется в виде серии микроинструкций — микропрограммы, микрокода.
  • Стек и куча (память)?

    Griboks
    @Griboks
    Максим Мосейчук, это у вас какая-то бессвязная речь. Я про стек - вы про кучу. Причём тут куча? Зачем вы это написали?

    Куда уж быстрее, чем один такт?

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

    Полтакта? Компьютеры так не работают

    А ещё существуют микропрограммы. Они работают быстрее машинного когда и как раз умеют в дробные такты.
  • Стек и куча (память)?

    Griboks
    @Griboks
    Максим Мосейчук,
    чем больше стек, тем он медленнее

    Это на порядки быстрее кучи.

    Хмм... Могу только сказать, это на порядки медленнее машинного кода.