OСTAGON-у : За слова ответите или как?

unname22

Объявил тут в соседней, ныне закрытой, ветке OCTAGON, дескать применение ООП повышает надежность кода:


Да понял я, что вы не поняли. ООП не для сокращения писанины, а для того же, для чего и GOTO запрещали, для повышения надёжности.

При прямом вопросе как, от ответа он уклонялся и юлил, меняя тему.
В общем чтобы наконец-то увидеть ответ на вопрос пришлось завести отдельную ветку.

lexanet

Может повысить надежность, в плане повышения эффективности поиска и локализации ошибок. Особенно в чужом коде. Так же, как и "запрет" goto. Но, не более. Это все инструмент. Главное, что в голове у создателя. Это чисто мое мнение. Сам сижу на "чистом" С. ООП эпизодически.

unname22

lexanet
Вы ведь понимаете, что это не ответ.
Я перед этим вообще выразил скепис в необходимости везде совать ООП, поскольку на практике просто ниразу не видел, чтобы его применение действительно оправдывало затраты.

Это просто бич какой-то. Везде суют ООП, везде где нужно и ненужно стремятся всунуть БД и так далее. Неужели уровень современного программиста настолько упал даже по сравнению с тем, что было два десятилетия назад?

Бывший

А какая альтернатива, ассемблер что-ли?
Сейчас требования к срокам разработки предъявляют немилосердные. И - да, уровень погроммиста уже не тот. Вернее, понимание программирования поменялось.

lexanet

unname22
Неужели уровень современного программиста настолько упал
Да. Уровень входа ниже плинтуса. В принципе, это нормально. И современные среды разработки с интеллектуальными системами генерации кода или подсказки следующего шага этому способствуют. Пусть будет больше программистов, плохих и хороших 😊
А насчет ООП, меня учили этому в институте, лет 20 назад. Так до сих пор не пригодилось 😊

Бывший

Я не спец по программированию, но читал старые книжки про программирование (по времени написания МС-ДОС только появился), рассуждения программистов о будущем их отрасли, в том числе и Го То, и сетования на то что погроммисты уже не те, итд.

OCTAGON

Русский не родной? Название темы поменяй.

OCTAGON

Значит не родной. Я не про опечатку))

почти аноним

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

unname22

почти аноним
В данном случае ПОП ничем не хуже.

wolfo

А чем именно ООП не нравится? Синтаксисом или организацией данных/кода?

lexanet

wolfo
А чем именно ООП не нравится?
Вопрос, есть ли у ООП реально преимущества перед ПОП в плане надежности. Я так думаю.

wolfo

ок. переформулирую -
что считать за ООП - синтаксис или структуру кода/данных

например библиотека OpenSSL - это что? Компилируется Сями, а структура ООП

Бывший

OCTAGON
Значит не родной. Я не про опечатку))
Та опечатка кстати звучала на казахском языке не слишком цензурно 😊

unname22

wolfo
Я в принципе про подход/ Он от синтаксиса и способов реализации не зависит.

wolfo

Понятно.
Ну так чему учили - из того и лепят.
Обычное дело - для хранения 10 строк - SQL-база 😊

HighMan

unname22, и чего Вам неймеца?
Во первых, Октагон мог не верно выразить мысль и, в результате, получилось, что применение ООП влияет на безопасность приложения 😊
Во вторых, возможно, что мысль была не верно интерпритирована руками и клавиатурой. 😊 У меня такое бывало. Как-то меня заклинило на GPS и GPRS. И на протяжении нескольких моих постов за навигацию отвечал GPRS. Меня, просто, поправили.
А, вообще, ООП, обычно, сильно ускоряет написание кода. Например, писать на чистом WinAPI - тот еще геморрой. MSDN более чем существенно экономит время. А то, что приложение, написанное на WinAPI, работает быстрее... Какой смысл? Окно откроется на 0.000001 секунду быстрее?
Или, например, пишется интерфейс для работы с БД. Гнаться за скоростью работы интерфейса? Оптимизировать код? Да ну нах! Под такую задачу, не то что С, а С# излишество. Проще забабахать на языке высокого уровня. Выигранные время, лучше потратить на оптимизацию SQL запросов.
У каждого инструмента - своя область применения. Глупо ювелирным молоточком заколачивать сваи.

TemkA

wolfo
ок. переформулирую -
что считать за ООП - синтаксис или структуру кода/данных

например библиотека OpenSSL - это что? Компилируется Сями, а структура ООП

За ООП считать использование классов

Если они там внутри есть - значит она написана с использованием ООП

Остаётся вопрос формата внешнего API

Некоторые делают двойной: и в виде классов и в виде функций, но тогда при каждом вызове извольте предъявлять все нужные структуры

TemkA

Теперь отвечая на изначальный вопрос

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

Microsoft, кстати, этой самой увлеченностью изрядно испортил в принципе относительно стройный в начале C#

Ведёт ли наступление непонимания к повышению надёжности - вопрос такой, интересный

С другой стороны возьня со всякими низкоуровневыми вещами, когда там структуры начинают инициализровать memset'ом - тоже ещё тот цирк

Нужна разумная грань

И никакого STL'а

TemkA

lexanet
Так же, как и "запрет" goto.

Меня вот больше напрягает манера некоторых товарищей зафигачить пачку return'ов внутри процедуры, перед каждым дублируя какие-то деинициализационные вещи. Обязательно где-нибудь да забудут что-то осовбодить, очистить и т.п.

ferrero

Когда же всех мудагов забанят? Уже не смешно, весна закончилась, а бредни в самом разгаре.

TemkA

unname22
Это просто бич какой-то. Везде суют ООП, везде где нужно и ненужно стремятся всунуть БД и так далее. Неужели уровень современного программиста настолько упал даже по сравнению с тем, что было два десятилетия назад?

Подождите

Во-первых вы его будете вынуждены пользовать, если используемые вами сторонние библиотеки это подразумевают

---------
https://www.codeproject.com/Articles/1181213/Easy-OpenCL-Multiple-Device-Load-Balancing-and-Pip

Hardware.ClDevices gpu1 = Hardware.ClPlatforms.all().devicesWithMostComputeUnits()[0];
Pipeline.ClPipelineStage add = new Pipeline.ClPipelineStage();
add.addDevices( gpu1);
ClArray;float; inputArrayGPU1 = new ClArray;float;(1024);
ClArray;float; outputArrayGPU1 = new ClArray;float;(1024);
add.addInputBuffers(inputArrayGPU1);
add.addOutputBuffers(outputArrayGPU1);
add.addKernels(@"
__kernel void vecAdd(__global float * input, __global float * output)
{
int id=get_global_id(0);
output[id]=input[id]+1.0f;
}", "vecAdd", new int[] { 1024/*global range*/ }, new int[] { 256/* local range*/ });


d.prependToStage(mul); // prepends add stage to mul stage
var pipeline = add.makePipeline(); // creates a 2-stage pipeline out of add and mul.

if(pipeline.pushData(new object[] { arrayToGetData }, new object[] { arrayToReceiveResult }))
{
Console.WriteLine("Needs M*2+1 iterations");
Console.WriteLine("Extra client arrays for both inputs and outputs of pipeline");
Console.WriteLine("First result is ready!");
}
---------

Полу-чистый хорош, но много возьни всякой мелкой

---------
https://www.codeproject.com/Articles/1178304/StringLib-C-Library-Adding-String-Type-to-C

int main()
{
string string_a;
string string_b;
string_set(&string_a, "hello world\nnew line test");
string_newline(&string_a, "nothing to see here");

string_print(string_a);
printf("SIZE: %d\n", string_getSize(string_a));

FILE *foo = fopen("text.txt", "w");
string_write(string_a, foo);
fclose(foo);

foo = fopen("text.txt", "r");
string_read(&string_b, foo);
string_print(string_b);
printf("SIZE: %d\n", string_getSize(string_b));
string_delete(&string_a);
string_delete(&string_b);
return 0;
}
---------

А вот когда людей самих куда-то уносит - это всё

---------
https://www.codeproject.com/Articles/1088293/Units-and-measures-for-Cplusplus

template;class T1, class T2, class T3;
auto distance_moved(ACCELERATION::unit;T1; accel,
VELOCITY::unit;T2; init_velocity,
TIME::unit;T3; t)
{
return 0.5 * accel * t* t + init_velocity*t;
}

template;class T1, class T2, class T3;
auto max_temperature_diff(TEMPERATURE::measure;T1; t1,
TEMPERATURE::measure;T2; t2,
TEMPERATURE::measure;T3; t3)
{
return (abs(t1 - t2) ; abs(t2 - t3)) ?
((t3 - t1) ; abs(t1 - t2)) ? (t3 - t1) : abs(t1 - t2)
:
((t3 - t1) ; abs(t2 - t3)) ? (t3 - t1) : abs(t2 - t3);
}
---------

И там чем дальше, тем дремучей

---------
The general implementation of Sys2Sys«> defines its factor constant as

static constexpr double factor =
#define ULIB_ENUMERATED_TERM(n) \
( \
(dims: 😀##n != 0) ? \
int_power<dims: 😀##n» \
: 😲f(Base2Base4Dim«n, from_sys=""»::factor)\
: 1)
ULIB_CONCAT_ENUMERATED_TERMS_FOR_ALL_DIMS(*)
#undef ULIB_ENUMERATED_TERM
;
«/n,»

which expands for 5 dimensions as:

static constexpr double factor =
((dims: 😀1 != 0) ? int_power«dims: 😀1»: 😲f(
Base2Base4Dim«n, from_sys, to_sys»::factor): 1)
* ((dims: 😀1 != 0) ? int_power«dims: 😀1»: 😲f(
Base2Base4Dim«n, from_sys, to_sys»::factor): 1)
* ((dims: 😀1 != 0) ? int_power«dims: 😀1»: 😲f(
Base2Base4Dim«n, from_sys, to_sys»::factor): 1)
* ((dims: 😀1 != 0) ? int_power«dims: 😀1»: 😲f(
Base2Base4Dim«n, from_sys, to_sys»::factor): 1)
* ((dims: 😀1 != 0) ? int_power«dims: 😀1»: 😲f(
Base2Base4Dim«n, from_sys=""»::factor): 1);
«/n,»
---------

Вот он насуёт такого говна-только-ему-понятного и привет

Вон даже форумный движок одурел и за смайлики посчитал

TemkA

ferrero
Уже не смешно, весна закончилась, а бредни в самом разгаре.

Так про баб-то тем нету 😛

Выясняют правильность цитат на стенах в вагонах метро

HighMan

TemkA

Меня вот больше напрягает манера некоторых товарищей зафигачить пачку return'ов внутри процедуры, перед каждым дублируя какие-то деинициализационные вещи. Обязательно где-нибудь да забудут что-то осовбодить, очистить и т.п.

+ много.
Часто приходится многократно ретурнить, высвобождать ресурсы, закрывать соединения и т.д.. GOTO много меньшее зло, однако, все равно не использую. Не привык.
Кстати, я так толком и не понял, почему использование goto, дурной тон? Вообще-то джамп и условные джампы, инструкции процессора. Почему же их использование в С/С++ дурной тон?
Куда более дурной тон, на мой и не только мой взгляд, это нагромождение дефинишинов. Вот где моск заворачивается, однако, дефинишины используются повсеместно и без меры.

Кстати, я в предыдущем посте допустил ошибку. Приплел MSDN, хотя имел в виду MFC 😊

TemkA

HighMan
Кстати, я так толком и не понял, почему использование goto, дурной тон?

Возможно потому, что это подразумевает использование лейблов
Лейблы как бы предполагают их осмысленное наименование
А ты типа должен уметь играться с нонеймовыми {}, а если совсем надо уж пометить "шо це було", то написать комментарий

----------

Сейчас подчитаю что граждане пишут

-------

Пока могу ещё добавить своё - "GOTO - удел Бейсика"
А хуже Бейсика - только Паскаль 😛

TemkA

TemkA
Сейчас подчитаю что граждане пишут

Да, прочитал, мысли верные

http://forum.sources.ru/index.php?showtopic=54769&st=0

Ссылаются на Бейсик и на возможности использования эквивалентных замен управления переходами

=======
do
{
if( .. ) break;
....
...
if( .. ) break;
....
...
if( .. ) break;
....
=======

=======
try
{
for(..)
for(..)
for(..)
if(..)
throw;

}
=======

Вот, кстати 😛
Пользующие экскепшены - отдельные пи......
За это их всенепременно нужно закопать

Хуже них - только любители assert'ов 😀

Обломов

Ужас, как это важно. Для России и самопознания.

TemkA

Обломов
Для России и самопознания.

Россия не нужна
Самопознание - тоже

Бывший

TemkA
Вон даже форумный движок одурел и за смайлики посчитал
😀

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

Бывший

TemkA
Пока могу ещё добавить своё - "GOTO - удел Бейсика"
А хуже Бейсика - только Паскаль
Гм, я попрошу... 😛
ГоТо есть и в Паскале, и без Гото можно и в Басике спокойно кодить. Кстати самообъявление переменных в теле программы в Басике - на самом деле предполагает наличие высокого уровеня самодисциплины программиста. В Паскале-то думать особо не надо, компилятор первый возмутится по поводу необъявленных переменных в теле программы.

Да, и судя по литературе гото - это анахронизм ещё с 80-х годов. Странно что его вообще вспоминают до сих пор.

TemkA

Бывший
Странно что его вообще упоминают до сих пор.

Ну вот гугланул ради интереса

goto inurl:github.com/openssl/openssl/

Вполне себе имеется

https://github.com/openssl/openssl/blob/master/apps/ciphers.c

хотя тут, наверное, оправдано

unname22

HighMan
unname22, и чего Вам неймеца?
Во первых, Октагон мог не верно выразить мысль и, в результате, получилось, что применение ООП влияет на безопасность приложения 😊
Во вторых, возможно, что мысль была не верно интерпритирована руками и клавиатурой. 😊 У меня такое бывало. Как-то меня заклинило на GPS и GPRS. И на протяжении нескольких моих постов за навигацию отвечал GPRS. Меня, просто, поправили.
А, вообще, ООП, обычно, сильно ускоряет написание кода. Например, писать на чистом WinAPI - тот еще геморрой. MSDN более чем существенно экономит время. А то, что приложение, написанное на WinAPI, работает быстрее... Какой смысл? Окно откроется на 0.000001 секунду быстрее?
Или, например, пишется интерфейс для работы с БД. Гнаться за скоростью работы интерфейса? Оптимизировать код? Да ну нах! Под такую задачу, не то что С, а С# излишество. Проще забабахать на языке высокого уровня. Выигранные время, лучше потратить на оптимизацию SQL запросов.
У каждого инструмента - своя область применения. Глупо ювелирным молоточком заколачивать сваи.

Если бы он не верно выразил мысль - уже бы исправился. Исправил же он меня, когда я понятие "надежность" подменил на "безопасность"

Касаемо второй части, я не подойду и близко к MSDN и тем более WinAPI.
Если приспичит рисовать интерфейс, это скорее всего будет Tk как наиболее быстрый вариант, ну или Gtk+.
А использование БД как затычки к каждой заднице я вообще не понимаю.
Число задач, где реально нужна БД, это менее 1% от ее реального применения. В курсе, что до нескольких миллионов строк БД уступает и серьезно по производительности скажем работе с обычными текстовыми файлами. А то задрали уже со своим SQL.

Ну ладно, это все мое мнение и тонкости.
А я же жду ответа на конкретный вопрос, конкретно от OCTAGON-а, как же все-таки ООП повышает надежность?????

TemkA

Бывший
и без Гото можно и в Басике спокойно кодить.

========
10 INPUT "What is your name: "; U$
20 PRINT "Hello "; U$
30 INPUT "How many stars do you want: "; N
40 S$ = ""
50 FOR I = 1 TO N
60 S$ = S$ + "*"
70 NEXT I
80 PRINT S$
90 INPUT "Do you want more stars? "; A$
100 IF LEN(A$) = 0 THEN GOTO 90
110 A$ = LEFT$(A$, 1)
120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30
130 PRINT "Goodbye "; U$
140 END
========

И как вы без IF'ов что-то сделаете ?

Бывший
Кстати самообъявление переменных в теле программы в Басике - на самом деле предполагает наличие высокого уровеня самодисциплины программиста. В Паскале-то думать особо не надо, компилятор первый возмутится по поводу необъявленных переменных в теле программы.

А в чём самодисциплина ?

В Си - тоже нужно было в начале функции, в Си++ - стало можно и по ходу дела

unname22

TemkA

Меня вот больше напрягает манера некоторых товарищей зафигачить пачку return'ов внутри процедуры, перед каждым дублируя какие-то деинициализационные вещи. Обязательно где-нибудь да забудут что-то осовбодить, очистить и т.п.

Вот тут как раз всеми нелюбимый goto может быть полезен вместо return.
Просто перейти к концу процедуры, где все конфигурируется обратно к дефолту и вызывается нормальный return.

И как без goto на асме жить? скажете устарело? А например загрузчики?
Да и на том же MSP430 ассемблер просто диво как хорош.

Так что аккуратное применения goto при необходимости и включении головы может быть вполне полезным и понятным.

Далее по вашим постам:
Да си чистый хорош, но, там где ресурсы ограничены, те же контроллеры приходится все делать руками.
А на больших мощностях на си только совсем уж ресурсоемкие вещи делать, а остальное ИМХО - удел высокоуровневых скриптовых языков. В юности я очень любил и люблю Perl, там даже производительность практически не уступает. Но приличные проблемы возникают когда надо делать порт в винду, либо тащить на какую-то встроенную системк, да и вообще переносить, гибкость и модульность тут начинают боком вылезать. Потому часто применяю Tcl и его диалекты.
Накидал быстро полумакет,если устроило, переписал для производительности именно нужные части на сях и привет.
Любителям ООП есть и питон с руби в этой области.

TemkA

unname22
Касаемо второй части, я не подойду и близко к MSDN и тем более WinAPI

Так вы этот, Delphi'ст что ли типа ?

Они тоже никуда не подходят. Им рантайма хватает внутреннего типа
А формочки с событиями - встроенные

unname22
Исправил же он меня, когда я понятие "надежность" подменил на "безопасность"

Ну я вам могу наверное про безопасность рассказать
Из свежего

Наверное когда у вас что-то типа

TString UserResponse;

...

if (Config::GetItem("AdminPassword") == UserResponse)

то может быть всё хорошо

А вот тут Intel отметился:

if(strncmp(computed_response, user_response, response_length))
deny_access();

К сожалению оказалось, что response_length может быть равен 0 и тогда...

Погуглите последнюю строчку - найдёте историю
Изрядный Upppps получился


unname22

TemkA
Так вы этот, Delphi'ст что ли типа ?

Попрошу в этой теме матом не выражаться, тем более в мой адрес.

unname22

TemkA


if(strncmp(computed_response, user_response, response_length))
deny_access();

Гуглить если честно особо некогда, но судя по всему интел в качестве оптимизации заложил "ленивость" в данное сравнение?

TemkA

unname22
И как без goto на асме жить? скажете устарело? А например загрузчики?

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

unname22
Да си чистый хорош, но, там где ресурсы ограничены, те же контроллеры приходится все делать руками.
А на больших мощностях на си только совсем уж ресурсоемкие вещи делать, а остальное ИМХО - удел высокоуровневых скриптовых языков

Мне в своё время рассказывали про всякие FPGA, что можно на Си, а компилятор всё это в вентили преобразует

Судя по ссылкам - не врали

https://stackoverflow.com/questions/8988629/can-you-program-fpgas-in-c-like-languages

Если спуститься к более приземлённым вещам
Например играм с Arduino, то там изначально вариант Си

http://www.robotshop.com/blog/en/arduino-5-minute-tutorials-lesson-2-basic-code-blink-led-2-3639

https://www.arduino.cc/en/Tutorial/BuiltInExamples

В совсем более скромных контроллерах там уже наверное вам придётся так или иначе, хотя может производители всё же любят своих клиентов и сделали компилятор

Как-то давно ещё смотрел какие-то смарт-карты Java Card
Как следует из названия - там Java
Фигулька размером с сим-карту, а как-то вот успевает крутить

unname22
В юности я очень любил и люблю Perl

Он, кстати, сдох

TemkA

unname22
Гуглить если честно особо некогда, но судя по всему интел в качестве оптимизации заложил "ленивость" в данное сравнение?

Он заложил вход на все свои серверы, сделанные за 10 лет, со включенным AMT вход с пустым паролем...


Бывший

TemkA
Ну вот гугланул ради интереса

goto inurl:github.com/openssl/openssl/

Вполне себе имеется

https://github.com/openssl/openssl/blob/master/apps/ciphers.c

хотя тут, наверное, оправдано


Там я не спец, но подозреваю что там тоже можно обойтись без.
TemkA
========
10 INPUT "What is your name: "; U$
20 PRINT "Hello "; U$
30 INPUT "How many stars do you want: "; N
40 S$ = ""
50 FOR I = 1 TO N
60 S$ = S$ + "*"
70 NEXT I
80 PRINT S$
90 INPUT "Do you want more stars? "; A$
100 IF LEN(A$) = 0 THEN GOTO 90
110 A$ = LEFT$(A$, 1)
120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30
130 PRINT "Goodbye "; U$
140 END
========

И как вы без IF'ов что-то сделаете ?


В смысле?
Там рипиты можно использовать. Синтаксис не помню, но в Басике точно есть операторы цикла с пред- и/или цикла с пост-условием. Легко и изящно 😊
TemkA
А в чём самодисциплина ?

В Си - тоже нужно было в начале функции, в Си++ - стало можно и по ходу дела


Самодисциплина в том что надо самостоятельно и прилежно объявлять все переменные в соответствующем разделе. Бэйсик-то всё и так схавает, конечно... но просто чтобы самому не запутаться.
С другой стороны в нем заложена возможность как бы динамического объявления переменных. Например в каких-то условиях если не нужно, то переменная и не объявляется и не занимает ОЗУ, а когда нужно - она прямо в теле программы объявляется.
Хотя... это уже прошлый век 😞 при нынешних гигабайтах озу, сэкономленные 2-4 байта выглядят как-то нелепо, да. О времена, о нравы 😊

TemkA

Бывший
Хотя... это уже прошлый век 😞 при нынешних гигабайтах озу, сэкономленные 2-4 байта выглядят как-то нелепо, да. О времена, о нравы 😊

==========
http://www.ixbt.com/news/2017/05/18/hewlett-packard-enterprise-the-machine-160.html

В далёком 2014 году компания HP рассказала о проекте The Machine - новом типе ПК, в основе которого лежит не процессор, а память. Изначально предполагалось, что The Machine будет использовать мемристорную память, но из-за отсутствия необходимых коммерциализированных технологий в 2016 году нам показали первый прототип (уже компании Hewlett Packard Enterprise), использующий память DRAM.

И вот HPE показала второй прототип. Сама концепция сейчас называется Memory-Driven Computing, но это всё развитие идей, заложенных в проекте The Machine.

Новый прототип содержит уже не 4 ТБ памяти, а 160 ТБ. По словам разработчиков, это позволяет устройству одновременно работать с данными, содержащимися примерно в 160 млн книг.
==========

==========
http://www.ixbt.com/news/2017/05/21/intel-3d-xpoint.html

В марте копания Intel представила первые накопители Optane для настольных ПК. Напомним, они используют новую энергонезависимую память 3D XPoint.

Несмотря на то, что первые шаги этой памяти на рынке никак нельзя назвать революцией, в итоге она может занять даже большую нишу, чем считалось ранее. Источник сообщает, что уже в следующем году Intel может вывести на рынок оперативную память, использующую микросхемы 3D XPoint.

По мнению процессорного гиганта, память DRAM является дорогой, нестабильной (энергозависимой) и не может предоставить существенные объёмы по доступной цене. Всё это якобы можно исправить с внедрением в эту область памяти 3D XPoint.


Память будет использовать существующий форм-фактор DIMM, что позволит сохранить совместимость. Однако нужно понимать, что такие модули не заменят привычные модули ОЗУ, по крайней мере, первое время. Речь идёт о совместной работе двух разных видов памяти, а тут уже возникает проблема поддержки со стороны CPU и ПО. Вероятно, именно по этой причине изначально такая оперативная память появится лишь для серверного сегмента.
==========

Т.е. всё катится к уже даже не гигабайтам...

unname22

TemkA
Не писать на нём, потому как сильно мешает портабельности
Те же ядра операционок пишутся на Си, с минимальным привлечением исключительно в архитектурно-зависимых местах

Как же вы тот же загрузчик исключительно на сях сделаете?
Без кусков асма пока совсем не обойтись

TemkA
Мне в своё время рассказывали про всякие FPGA, что можно на Си, а компилятор всё это в вентили преобразует

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

TemkA
Например играм с Arduino, то там изначально вариант Си
Изначально ардуино это недоява. МК с обвязкой для лохов так сказать.
А микроконтроллер там Atmel, сейчас можно считать устаревшими, как и пики.
Да и с серийностью у атмела всегда косяки были в плане поставок.
Как-то я глянул в вывод ассемблерный их компилятора родного, давненько правда, но до сих пор как вспомню... Одно только скажу, если переписал кусок кода с case на вложенные if, и код ассемблера стал другим, понимаете какая там "оптимизация" ?


Сейчас из актуального из простых МК stm8 за счет своей цены и корпусов, но убогая документация и отсутствие нормальных средств разработки. MSP430 от техаса, только за счет того, что они снизили на них цены и зачастую контроллер с их отличным АЦП стоит столько же как просто их АЦП. Да и позиционируют они теперь их скорее не как универсальные МК, а именно для обработки сигналов с датчиков разнообразных. Остальное пожалуй что и мертво, токльо как расширение старых архитектур для тех, кто не хочет слезать с пиков да АВРок.
Все вытеснили дешевые Армы, сначала 7 и 9, теперь и cortex-ы.
Это и stm32, и at91, и филипсы, и те же техасинстраментс.


TemkA

Он, кстати, сдох

С хрена ли баня пала?
Живее всех живых. Вот недавно пришлось людям костяк сервера для малины нарисовать.

unname22

Бывший
Самодисциплина в том что надо самостоятельно и прилежно объявлять все переменные в соответствующем разделе. Бэйсик-то всё и так схавает, конечно... но просто чтобы самому не запутаться.
С другой стороны в нем заложена возможность как бы динамического объявления переменных. Например в каких-то условиях если не нужно, то переменная и не объявляется и не занимает ОЗУ, а когда нужно - она прямо в теле программы объявляется.
Хотя... это уже прошлый век 😞 при нынешних гигабайтах озу, сэкономленные 2-4 байта выглядят как-то нелепо, да. О времена, о нравы 😊

Чем perl в данном случае хорош: надо накидать быстро - нафиг объявление переменных.
Что-то серьезное: добавил короткую строчку и он ругается на необьявленные переменные )

unname22

Бывший
Самодисциплина в том что надо самостоятельно и прилежно объявлять все переменные в соответствующем разделе. Бэйсик-то всё и так схавает, конечно... но просто чтобы самому не запутаться.
С другой стороны в нем заложена возможность как бы динамического объявления переменных. Например в каких-то условиях если не нужно, то переменная и не объявляется и не занимает ОЗУ, а когда нужно - она прямо в теле программы объявляется.
Хотя... это уже прошлый век 😞 при нынешних гигабайтах озу, сэкономленные 2-4 байта выглядят как-то нелепо, да. О времена, о нравы 😊

Вот прямо сейчас плату развожу с STM8S003K3T6C
8 кб Флэша, 1 кб оперативной памяти )))

Бывший

Мммм, для микросхем оно будет в самый раз! 😊

TemkA

unname22
С хрена ли баня пала?

Мода прошла, PHP вытеснил скорее всего

TemkA

unname22
Одно только скажу, если переписал кусок кода с case на вложенные if, и код ассемблера стал другим, понимаете какая там "оптимизация" ?

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

TemkA

Я тут вчера чуть подчитал про HP'шную поделку и там кто-то упомянул один занятный проект с т.з. концепта

http://dz.ru/os-phantom
http://old.computerra.ru/interactive/546249/

При этом он соответственно требует управляемый код и объектность

Причём, как ни странно во-первых она не сдохла, а во-вторых я увидел маркировочку e2k

Сейчас там чуть порылся в репозитории могу продемонстрировать описанный подход

TemkA
Те же ядра операционок пишутся на Си, с минимальным привлечением исключительно в архитектурно-зависимых местах

https://github.com/dzavalishin/phantomuserland/tree/master/phantom/libphantom

и там пара вариантов реализации под соответственные процессоры

https://github.com/dzavalishin/phantomuserland/blob/master/phantom/libphantom/ia32/atomic.S

https://github.com/dzavalishin/phantomuserland/blob/master/phantom/libphantom/arm/atomic.c

TemkA

Кстати, у нас можно считать что стартовала гонка многоядерников
После многолетнего застоя

http://www.ixbt.com/news/2017/05/30/intel-core-i9-skylake-x.html

http://wccftech.com/asus-rog-x399-zenith-extreme-x370-crosshair-vi-extreme-motherboard/

http://www.ixbt.com/news/2017/05/30/asrock-x399-professional-gaming-x399-taichi-amd-ryzen-threadripper.html

Обращаю внимание на количество слотов памяти
Ну и на размеры сокета, тоже

А вы тут байтики экономите и циклы переписываете... в то время как параллелить нужно

И ценники становится вменяемыми

unname22

TemkA

Мода прошла, PHP вытеснил скорее всего

Тоесть по вашему если язык не модный, то он мавтоматически сдох?
Посмотрите на активность в CPAN для начала.

unname22

TemkA
Кстати, у нас можно считать что стартовала гонка многоядерников
После многолетнего застоя

Обращаю внимание на количество слотов памяти
Ну и на размеры сокета, тоже

А вы тут байтики экономите и циклы переписываете... в то время как параллелить нужно

И ценники становится вменяемыми

Ну и для чего они?
Какое практическое применение этим мозщностям?

Только если весь софт на яве писать....

TemkA

unname22
Ну и для чего они?
Какое практическое применение этим мозщностям?

Не знаю, придмумывайте 😛
Но серверы стали по цене десктопа типа

В остальном индустрии нечего предложить
Да и не смогут скоро, упёршись в нанометр

TemkA

Ого !

unname22

Ну а по теме в общем все понятно.
Очередной форумный балабол.

Uzel

Вся тема - как памятник утверждению что кибернетика лженаука 😊

levasseur

По затравочному посту - безграмотный и хамовитый балабол, с однообразными приемчиками уровня красномордика с барахолки. Лучший антидот полный игнор.
По теме....я в ужасе.
Как до дела доходит, так найти человека способного к чему-либо серьезному уже почти невозможно. Нубы в разбираемой области нифига не видят предистории. Из мильонов решений, стандартов, "новых слов в технологии" через 20+лет остались разве что концепции и математика.
ООП одна из парадигм, вполне себе застолбившая область применения. Инструментарий и технологии будут меняться. Появится и что-нибудь новое.
Про низкий порог входа... Ну есть такое.
Плохо - биомасса давит. Работа "для поддержки штанов" вся занята-перезанята.
Хорошо - из мегатонн плевел отсеивается бесценное. Да-да... из тонн навоза пара жемчужинок, и все реже и ценнее.
Счас вона, подрастающее пытаюсь поднатаскивать. В ужасе и ахуе. Даже университетское образование уже торт. Даже западное. Молодняк , вирутозно математящий вдруг как с разбега в стену, если приходиться тащить что-то из другой (для него) области знания.
И сие неизбежно перетекает в политоту. И философию с диалектическим привкусом. Темная масса легко управляется, комфортно и безопасно. Но не изобретет радио, пенициллин ... пистолет с глушителем тоже...и термоядерную бомбу...
И было такое, и еще будет. Как христианнейшую Европу во время драккаров ,с ее лучшими и технологичнейшими и прочая. Как мегагосударства мезоамерики в эпоху ВГО . Как .... еще тысячи примеров.
Легированная сталь , конструкции и тактика - больно Европе,Африке и Азии.
Сталь, компас, чугун, порох, лошади - мезоамерика.
???Информационная НТР, энергонакопители, прецезионное оборудование для одиночек - пока еще в ходу.
Никаких поней, какающих радугой. Мрак,кровь, боль и слезы.
"Да явится воля Ормузда, осущающая слезы детей его..."(с)
...Эххххх, скоро итти мне к местному ГУ ментятнику, ритуал плясать.

TemkA

Uzel
Вся тема - как памятник утверждению что кибернетика лженаука 😊

Посмотрите на продукцию Boston Dynamics, чтобы понять что это не так

Uzel

Да шутка же , епт. Разрядить атмосферу 😊

TemkA

Uzel
Да шутка же , епт. Разрядить атмосферу 😊

Ну на самом деле нет. Если бы не они, то я бы подумал, что всё именно что в чистое программирование и ушло

levasseur

unname22
[B]

Чем perl в данном случае хорош: надо накидать быстро - нафиг объявление переменных.
Что-то серьезное: добавил короткую строчку и он ругается на необьявленные переменные )

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


========
10 INPUT "What is your name: "; U$
20 PRINT "Hello "; U$
30 INPUT "How many stars do you want: "; N
40 S$ = ""
50 FOR I = 1 TO N
60 S$ = S$ + "*"
70 NEXT I
80 PRINT S$
90 INPUT "Do you want more stars? "; A$
100 IF LEN(A$) = 0 THEN GOTO 90
110 A$ = LEFT$(A$, 1)
120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30
130 PRINT "Goodbye "; U$
140 END
========

И как вы без IF'ов что-то сделаете ?


В смысле?
Там рипиты можно использовать. Синтаксис не помню, но в Басике точно есть операторы цикла с пред- и/или цикла с пост-условием. Легко и изящно

Найдите что-нибудь по лоу-левел заклинаниям.
Кнута например, Абеля (устарел бедолага).
И явится просветление , что без IF обойтись можно в принципе (....в ООП побижале к идиалу... на каждый вариант управляющего состояния свой класс)
.....
/*процедура обработки - выбор Y или N,A,D,F,G,H*/
/*call convention == self clean, register only*/
PROCEDURE
SWITCH_LETTER:
PRE%aliased _get_letter_handler
push ebx
push edx
mov ebx, eax
mov eax,[0x0FADB002] // metod table switch case pointer, global
mul ebx
shl eax,2
push esi
mov esi,eax
mov eax,[esi]
pop esi
pop edx
pop ebx
retf
ENDP
/* использование*/

call _get_symbol /* eax- symbol*/
call _get_letter_handler /*eax - точка входа обработчика*/
mov ebx,eax
call _is_valid /* проверимся, необязательно*/
call [ebx]
..... а тут нам вернули точку входа метода, который должен вызваться по соответсвующей букве

Вот так-то.
ООП на ассемблере и без IF/Case обошлись...

levasseur

unname22
Как же вы тот же загрузчик исключительно на сях сделаете?
Без кусков асма пока совсем не обойтись]
Да хоть на https://ru.wikipedia.org/wiki/Brainfuck со вставками на Clipper с поддержкой .cdx FoxPro.
В биос вшит интерпретатор и писанина на HLL . Фенечки - писанина пакована лемпель-зивом.
И ниче не помешает капмутеру загрузиться и прекрасно работать.
Как на сях (паскалях, бейсиках, сишарпах, жабах) ни пиши, все равно жевать процессору , небольшим набором регистров во вполне себе ограниченной памяти.
Вопрос - на вход пришло 32бита значение. В зависимости от четности вызвать функцию "четность" или "нечетность".
Варианты ответа очень даже...
Что важнее ? - растактовка или обьем кода? Скорость или память?
...аааааааа....чтоб понятно было....тады ой. Пишите на ПоХаПе
shr eax,1
jc "нечетность"
call "четность"
..... а если "нечетность" все лишь прерасширение "четности" на 0х24 байта?...обойдемся одной процедурой.
shr eax,1
jc ("четность" - 0x024) -
call "четность"

TemkA

levasseur
И явится просветление , что без IF обойтись можно в принципе (....в

Расписали какой-то switch/case и довольны
ЛОЛ
Вы if-то давайте позабористей возьмите, с > , « , &, |

Вот взял чисто рядом, простенкий самый

https://github.com/dzavalishin/phantomuserland/blob/master/phantom/libphantom/hexdump.c

И ?

levasseur
И явится просветление , что без IF обойтись можно в принципе (....в

mov eax,[0x0FADB002] // metod table switch case pointer, global

...

call [ebx]

Любая операция с памятью на порядок медленней пары cmp/jX
Если переходов много - то будет табличка, если мало и неоднородные сравнения - то уже нет

TemkA

levasseur
Вопрос - на вход пришло 32бита значение. В зависимости от четности вызвать функцию "четность" или "нечетность".
Варианты ответа очень даже...
Что важнее ? - растактовка или обьем кода? Скорость или память?


if ((a » > 1) & 1) {}

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

Intel'овский попробуйте
Он вам в такое развернет, что вы сами никогда не додумаетесь и это будет оптимальным

Бывший

levasseur
Найдите что-нибудь по лоу-левел заклинаниям.
Кнута например, Абеля (устарел бедолага).
И явится просветление , что без IF обойтись можно в принципе (....в ООП побижале к идиалу... на каждый вариант управляющего состояния свой класс)
.....
Давайте попроще, профессор! 😊 Я Асм только на картинке видел. Таким пилотажем не занимался. В курсе только, что на ассемблере что можно даже бродилко-стрелялку с крутейшей графикой сделать, весом в пару сотен килобайт. Название не помню, в инете скачать можно.
Конечно если умеешь непосредственно микропроцессором управлять - можно много чего сделать, но наука эта находится за гранью понимания многих юзеров поколения Windows.

TemkA

Бывший
Давайте попроще, профессор! 😊 Я Асм только на картинке видел. Таким пилотажем не занимался. В курсе только, что на ассемблере что можно даже бродилко-стрелялку с крутейшей графикой сделать, весом в пару сотен килобайт. Название не помню, в инете скачать можно.

Можно
Но сии усилия мне кажутся бесполезной тратой времени

По крайней мере сейчас, когда компиляторы доразвились

levasseur

TemkA
Любая операция с памятью на порядок медленней пары cmp/jX
Если переходов много - то будет табличка, если мало и неоднородные сравнения - то уже нет
call [ebx] - самый быстрый вариант косвенной адресации ( ну раньше так было, счас отстал). И никаких "операций с памятью" тут близко нет. Лишний такт на модификацию EIP по сравнению с явным call offset .

По картинке нубский косяк - I непонятно стартовое значение и тип. А поточный фильтр классически реализуется через цепочечные операции в десяток команд и табличку.
lea esi , data_string
xor ecx,ecx
mov eax ,[ebp + current_chunk_] /*локал, стэк*/
....
repnz scasb
....
pop ecx
loop ...

"страшный набор " IF с чем попало легко расписывается на что-то вроде

cmp eax,[ebx]
je ...
jnc ...
jc ..
test eax, edx
...
xor eax,edx
shl ...
shr ...
je ...
и задача , решаемая пятком классов укладывается в 0хEB байт вместе с данными.

levasseur

TemkA
if ((a .. 1) & 1) {}
Компилирую:

push ebp
mov ebp,esp
add esp,....
push eax
push ecx
mov eax, [DATA:a]/*смещение в DS 32 константа в сегменте кода*/
mov ecx, 0x0000001h /*32 константа, в сегменте кода*/
clc
shr eax,ecx
and eax, 0x0000001h /*32 константа, в сегменте кода*/
jz CHET
jnz NECHET
...
....
CHET:
...
mov eax , 0x0000001h /* TRUE /*32 константа, в сегменте кода*/*/
....
leave
ret

NECHET:
....
mov eax , 0x0000000h /* FALSE /*32 константа, в сегменте кода*/*/
....
leave
ret

С таким подходом "суперстрелялок" в 200кб не получится...

levasseur

TemkA
Любая операция с памятью на порядок медленней пары cmp/jX
Если переходов много - то будет табличка, если мало и неоднородные сравнения - то уже нет
Ай, просомтрел. Есть операция - с заталкиванием в аккумулятор из памяти.
Ну да. Любая операция с памятью на порядок медленнее.
НО! Если пар cmp/jX больше ...цати, то любая операция с памятью на порядок быстрее блока компареров. А если компареры подготовик требуют, рпусть некоторые, то структурирование быстро в отрыв уходит.
Знавал я одного подполковника, который за год(!) на паскале рисовалку кубика-рубика в движении почти сделал.
for ugol:=0 to 360 do begin
delay(1000);
IF (ugol = 1) then begin putpixel(....) ......
else
IF (ugol = 2) then begin putpixel(....) ......
else
....
Но не судьба
"Code segment too large" сказал ему паскаль и было все очень плохо...

Бывший

Вы поаккуратнее с кодами. В ракетных войсках ЧП: одна боеголовка вдруг включилась.

TemkA

levasseur
call [ebx] - самый быстрый вариант косвенной адресации ( ну раньше так было, счас отстал). И никаких "операций с памятью" тут близко нет. Лишний такт на модификацию EIP по сравнению с явным call offset .

О, как запущено-то... а [] ни о чём не говорят ?

levasseur
"страшный набор " IF с чем попало легко расписывается на что-то вроде

cmp eax,[ebx]
je ...
jnc ...
jc ..
test eax, edx
...
xor eax,edx
shl ...
shr ...
je ...

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

levasseur
и задача , решаемая пятком классов укладывается в 0хEB байт вместе с данными.

С таким подходом "суперстрелялок" в 200кб не получится...

А кому они нужны ?
Кто гонится за размером ?

Ну будет она в 10 Mb
Даже в кеш вся влезть сможет

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

Поделки вы можете лабать на чём угодно

Как только объём писанины превысит хоть сколько-нибудь нормальные размеры - вы будете утопать в возьне с реализацией

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

Если хочется секса - то имеете право

TemkA

levasseur
Но не судьба
"Code segment too large" сказал ему паскаль и было все очень плохо...

А взял бы не DOS'овый, а современный, то не сказал бы

https://www.freepascal.org/‎

там правда наверное проблема насчёт putpixel'а бы была, т.к. х.з. чем они там графику выводят в нём, но вы бы наверняка подмогли с этим вопросом товарищполковнику

olegich

о, тут как раз диз/ассемблерщики собрались. раз уж абель устарел че порекомендуете для освежения знаний?

levasseur

TemkA
О, как запущено-то... а [] ни о чём не говорят ?[]
Плятььььььььььь.....вот "с кем поведешься...."(с) Должно быть
call EBX
Что из всей логики следует. В EAX возвращается указатель, перекладывается в EBX , каллится.
А кому они нужны ?
Кто гонится за размером ?
да как бы...
И даже не представляете, что будет у вас с этим спагетти из меток и переходов на них, когда вы что-то перекорёжите чуть в условиях if'а...

Если хочется секса - то имеете право

Представляем. Видим воочию - по 15+лет без изменений эксплуатируется.

У меня была винда крайне экзотичная - Nashville WIN96 beta/
И вышла новая квака.... и нихатела работать на АМД-К6 под обычной виндой, и кое-как шевелилась под нэшвиллом.
Дык... взяв вынь-асю наперевес за неделю перелопатил наиболее часто юзаемые участки в быблиотеках. Матов было....особенно первые сутки. Потом привык.
Прирост скорости был .... от 10% до 80%!!! Просто бутылкины гирла в коде были заменены на эквиваленты. Более быстрые. С неувеличением использования памяти.
...и я гордо квакал в новой кваке...под приплясы знакомых на тему "оййййй...чтож оне делаююютт...надо новый комп!"

levasseur

TemkA
И кому это нужно - иметь в таком виде, в котором через полгода уже не сообразишь ?
Странный подход...вона, на перлах лепят только треск стоит. А оно давно всеми - врайтонли язык.
Писать надо так, что бы через полгода-год-два-пять никому в голову не пришло лезть переделывать.

levasseur

TemkA
[B]

А взял бы не DOS'овый, а современный, то не сказал бы

https://www.freepascal.org/‎

Это надо проговаривать лениво-серьезно, с никакой мимикой и нулевой экспрессией... 😊
там правда наверное проблема насчёт putpixel'а бы была, т.к. х.з. чем они там графику выводят в нём, но вы бы наверняка подмогли с этим вопросом товарищполковнику
Я и так помог. FloodFill() показал.Но в результате идея вращения вокруг еще одной оси появилась.
360х360х360 - шаг градус. Вполне возможно, что до сих пор батальон набирает координаты...

levasseur

TemkA
Вот взял чисто рядом, простенкий самый

https://github.com/dzavalishin/phantomuserland/blob/master/phantom/libphantom/hexdump.c]

Не сразу обратил внимание. Это "Ксоред", очень даже мощная компания, пожалуй, наисамая утут в РФ. Фантом - ихняя разработка с большими надеждами, но утопленная в рутине.
Анекдотическая ситуация была. Искался работой, вышел на собеседование туда.
Скайп, клипса, жаба. Стал меня иксПэРд пытати-катувати...
А я возьми и облажайся...
- А какие алгоритмы сортировки знаете?
(институт четверть+века тому , никогда ни очем )
- Пузырьком.
- А еще?
- Хмм....ку-сорт...
- А еще?
- А...хрен его...не помню...никогда не интресовался. В тулзах чего-то дефолтом есть, в принципе хватаает...
- А какая сложнотсь у пузырькового метода?
- А...ну факториал наверное( фэйл...почти...в выражении сложности можно написать факториал от размера, но можно и сократить его нафиг)
- Ну ясно....
(Дальше была задача, решенная мной еще в студентах и торжественно зафейленная в процессе собеседования...старость не радость)
.........
Прошло полгода.
https://novosibirsk.hh.ru/applicant/resumes/view?resume=119058ccff01a385c80039ed1f6c7152675078
Фэйл с "факториалом пузырька" сильно меня болил и кусал. И вот однажды
токнуло меня не по детски, я нарисовал я кусочек на жабе, и показал одному знакомому супостату с комментарием "а мине Ксоред абидел..".
И прих..л супостат, и сказал.
- Йоооууу!!! Это оргинальный алгоритм!!! Ми есть проверьять, да , надо проверьятьььь....вы же у нас работаЕте пока что?
Ну у них. Формально.
Прошло два месяца :
- Ваууу....оригинальный алгоритм. Не самый быстрый, но неплохо по памяти и в принципе применим на ооочень больших обьемаххх... стабильно работает.

TemkA

olegich
о, тут как раз диз/ассемблерщики собрались. раз уж абель устарел че порекомендуете для освежения знаний?

В моём детстве была книжка

Потом оно было дополнено справочником по 486-му
Зелёная книжка была такая, кажется издательства ИВК

В дополнение была прочитана что-то типа

http://www.kodges.ru/komp/jelezo/72320-zashhishhennyj-rezhim-processorov-intel.html

но только с рыжей обложкой вроде, видимо более позднего года издания

Фамилия автора вроде та самая

Возможно вам поможет что-то из этой подборки

http://nnm.me/blogs/kibo9000/knizhnaya_podborka_mikroprocessory_intel_9_knig/

TemkA

levasseur
Дык... взяв вынь-асю наперевес за неделю перелопатил наиболее часто юзаемые участки в быблиотеках. Матов было....особенно первые сутки. Потом привык.

Это детство. И наличие неограниченного количества свободного времени

Люди вот тоже развлекаются

http://forum.sources.ru/index.php?showtopic=312681

Видимо есть время и не лениво ещё

levasseur

TemkA
Это детство. И наличие неограниченного количества свободного времени
Ниправда. Работал всерьез. Был стимул на кандидатку в жены вчепятление произвести. Произвел... 😊
http://forum.sources.ru/index.php?showtopic=312681
Видимо есть время и не лениво ещё
Пасиба... Как интересный детектив прочитал.
Вот еслиб хоть половина кода так же писалась - мир был бы другим...
Эк они в конце концов на обработку потока простейшую задачу прикрутили.
И лет ....цать никому в голову не придет переделывать.

levasseur

"от 5 до 7 тактов" RCR reg,1 для семейства P6, поскольку в офиц. оптим-мануалах конкретные цифры для RCL/RCR reg,1 приводятся только для NetBurst (family 0Fh), а для 06h только Throughput = 4 и то для общего случая (без указания второго операнда) ? По данным А.Фога во всех P6 latency\throughput RCL/RCR reg,1 составляют 2\2, что выглядит вполне правдоподобным (с учетом корреляции с adc\sbb)
Оно , родное. Нынче некромантией над скелетами выглядит, но как образец подхода - акуально.
"Заклинания нижнего уровня".
Есть еще ниже уровень - машинный код. И там сюрпризы имеются ,исчо какие...

wolfo

levasseur
Есть еще ниже уровень
Помнится как-то хакерил защиту от трассировки -
там код находящийся в очереди команд (14 байт) модифицировал тот же код находящийся в памяти.

Ready

Мне в своё время рассказывали про всякие FPGA, что можно на Си, а компилятор всё это в вентили преобразует

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

TemkA

wolfo
Помнится как-то хакерил защиту от трассировки -
там код находящийся в очереди команд (14 байт) модифицировал тот же код находящийся в памяти.

Быловались так. От длины конвеера зависило. На более современных процессорах прокатывало, а на менее - нет, как будто под отладчиком получалось

levasseur

Оооооо... вспомнилось "детство" - мегавирус Whale
https://en.wikipedia.org/wiki/Whale_(computer_virus)
Ох как я его выковыривал и детектил.
Полиморфик древнейшего вида, набитый противоотладочными фокусами и написанный большей частью судя по всему на HLL.
А потом был SHELL... обитавший в дырах таблицы векторов и неполных параграфах мсдоса...
А еще был Roland - мистическая тварь, написанная сильно обиженным программером. Паковал файлы на лету, полиморфил, пропускал через себя почти все функции доса, половину биоса... натягивал адинф (тогдашнее уберваффе). Палился на старых 286 с EMS платой - там по перезагрузке фичка была, память не сбрасывалась. Типа защита от потери данных. Дык автор раскопал недокументированный баг в этой байде, и почти всю ЕМС память юзал для нужд виря. Блок архивации занимал 127 байт и жил где-тол в дырдочке области данных самой ДОС....
Эхххх... а потом пришло время мегабайтных вирусов - для винды же.. потом на вижуал басике клоуны писали всякие автораны для флешек/фотоаппаратов , по 15Мб.
Утрачено нынче то непонимаемое нечто, что давало скилл для написания вполне рабочих зверюшек по 50байт.

levasseur

TemkA
На более современных процессорах прокатывало, а на менее - нет, как будто под отладчиком получалось
Не поверите наверное, но до сих пор
pop ss
push sp
iret
ставит в неудобную позицию почти все дебаггеры.
Эх...какие мега-игрушки были в 60к .
Шахматная программа как счас помню, написанная двумя американскими зеками. 62Кб, 3д доска, оконный интерфейс, наработка собственной БД (или подключение готовой), и ахренненый скилл игры. Всякие дип блю и Каспаровы отдыхают. Памяти , правда , кушала много. На 512Кб работать не хотела.

TemkA

levasseur
Не поверите наверное, но до сих пор
pop ss
push sp
iret

а) и куда она у вас при этом улетит даже без отладчика ?
б) не запрещая прерывания имеете риск нарваться на то, что оно возникнет между

levasseur
ставит в неудобную позицию почти все дебаггеры.

Как бы на то он и, чтобы глаза и руки следили, а голова - думала

Используя Turbo Debugger, который обоходу триков и не научен был никогда, и ставя на нужных местах точки остонова вполне себе можно обойтись

Единственной хорошей альтернативой стал

http://vagsoft.chat.ru/dg.html

Но он слишком поздно появился

levasseur

TemkA
а) и куда она у вас при этом улетит даже без отладчика ?
Ровно куда рассчитано . Флаг отладки маленько померцает, ну затем и придумано.
И ваще удобно, патаму чта нихачу я стек иметь там, а хачу вон там и в двух икзимплярах. И чтоб можно было за sp посканить, на предмет характерных для дебаггера остатков.
б) не запрещая прерывания имеете риск нарваться на то, что оно возникнет между
Между чем и чем ? Да на здоровье.

levasseur

TemkA
Единственной хорошей альтернативой стал
http://vagsoft.chat.ru/dg.html
Но он слишком поздно появился
Очень неплох для любительского проекта. Типа для обучения вполне себе. Но вынь-ася умела много и красиво. Под ледышкой и жил.

В 2009 году Compuware продала исходный код и патенты компании Micro Focus. В настоящее время Micro Focus не поддерживает продукт "по различным техническим и коммерческим причинам".
Опыт - в странах бездуховности человек , умеющий пользоваться такими инструментами, и неимеющий официального опыта работы в АйТи по профилю дровописателя или чего-то подобного АВТОМАТИЧЕСКИ подозревается в самом черном хакерстве.
Эхххх...давно я дебагер в руки не брал..уже на годы счет идет..

unname22

levasseur
Не поверите наверное, но до сих пор
pop ss
push sp
iret
ставит в неудобную позицию почти все дебаггеры.
Эх...какие мега-игрушки были в 60к .
Шахматная программа как счас помню, написанная двумя американскими зеками. 62Кб, 3д доска, оконный интерфейс, наработка собственной БД (или подключение готовой), и ахренненый скилл игры. Всякие дип блю и Каспаровы отдыхают. Памяти , правда , кушала много. На 512Кб работать не хотела.

Я тут 10000 искал для андроида. Не нашел нормальной.
на десктопе году в 2005м уже отличная была какая-то.

TemkA

levasseur
Очень неплох для любительского проекта. Типа для обучения вполне себе. Но вынь-ася умела много и красиво. Под ледышкой и жил.

Под DOS'ом у нас ни у кого не прижился

Под Windows у него вечно какие-то завязки были, а потом они его и поддерживать бросили

Какое-то время был хорош Syser, как работающая альтернатива
Его автор тоже бросил

Читал, что сейчас модным является штатный Kernel debugger от Microsoft
Но мне не актуально уже давно, но люди пользуют

levasseur
Опыт - в странах бездуховности человек , умеющий пользоваться такими инструментами, и неимеющий официального опыта работы в АйТи по профилю дровописателя или чего-то подобного АВТОМАТИЧЕСКИ подозревается в самом черном хакерстве.

Драйверы писать - отдельное сумасшествие
Мне в своё время показалось что нормально, со всеми заморотами, его могут только сами авторы DDK и написать

При этом собственно связи с каким-то лоу-левел ассемблерными вещами и драйверами не вижу. Что SoftICE (криво, но тем не менее), что KD позволяет вроде как отлаживать при помощи отладочных символов, т.е. фактически на уровне исходников

Вот, нашел как это выглядит

https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debug-universal-drivers---step-by-step-lab--echo-kernel-mode-

https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/images/debuglab-image-breakpoint-echo-deviceadd.png

Всё прочее является спецификой именн: IRQL'и, MDL'и и прочее-прочее

И все этим замороченные сидели на http://www.osronline.com

Мой первый и единственный драйвер закончился уже больше 10 лет назад вместе со сдачей дипломной работой

Я какое-то время назад консультировался у знакомого с ситуацией человека
Он говорит, что начиная с Windows 7 со стороны Microsoft были проделаны работы, существенно ограничившие желание всяких разных сделать свой драйвер и пошевелить им что-то в ядре, предоставив сильно страждущим товарищам какие-то API

Тем самым они изрядно повысили стабильность работы платформы и избавившись от львиной доли "экранов смерти"

TemkA

unname22
Я тут 10000 искал для андроида. Не нашел нормальной.
на десктопе году в 2005м уже отличная была какая-то.

?

https://developer.android.com/reference/android/database/sqlite/package-summary.html


unname22

1000 имел в виду, игру карточную )))

и вообще не понимаю чем вам gdb не нравится?
Иногда работаю с ним, в полне себе.
Был бы еще нормальный gnu-тый компилятор под stm8...

TemkA

unname22
и вообще не понимаю чем вам gdb не нравится?

А как ему оказаться под Windows, кроме как в составе какого-нибудь непотребства, типа MinGW ?

Я вот тут сейчас про отладчики искал, вылезло такое

https://visualgdb.com

Некоторым категориям по мне так изрядно повезло, что на них тоже благодать снизошла

unname22

TemkA
А нахрена он мне нужен под винду?

TemkA

unname22
А нахрена он мне нужен под винду?

Не вам - а мне

Нахрена мне нужна невинда ? 😛

unname22

Ну быть программистом и сидеть в винде, это извращение.

Ready

Был бы еще нормальный gnu-тый компилятор под stm8

А IAR чем не торт?

unname22

под говновинду он, тем и плох. Но приходится терпеть

TemkA

unname22
под говновинду он, тем и плох. Но приходится терпеть

Т.е. мыши сначала рассаживаются на кактус, а потом начинаются рассказы про извращения 😀

В век виртуальных машин и удалённых терминалов - так вообще грех ныть
Себе ставить не надо. Она где-то там будет вертеться

unname22

Так и сделано

levasseur

TemkA
В век виртуальных машин и удалённых терминалов - так вообще грех ныть
Себе ставить не надо. Она где-то там будет вертеться
Во...прально...вчерась в досбоксе в облаке расковырял древнюю программу для расчетов электроники дабы расчеты слить, а не руками экраны копипастить.
Счас вот вспомнил - когда изматерил ВоТ за какое-то обновление (та еще история... 😊, как они мне намекнули, что расковыривание и публикация вкусностей есть нарушения многиЯх законов Великобритании, где юрлицо подписано). Дык IDA+WinDBG пользовал. Ниче , все нормально прошло.