Обновить
-14
Сергей@kovserg

Инженер

7
Подписчики
Отправить сообщение
Какие такие подходы изменились. Под DOS, Win3.1 и unix С/С++98 компилятор работает без проблем например digitalmars. При желании можно запустить в виртуалке или в dosbox-е. Почему C++11 так не может. Что такого он использует при генерации кода что ему мешает работать на старых системах?
«Речь идет про систему 16-летней» ага через 3года и на windows7 перестанет собираться. Хочется привести ссылку на https://geektimes.ru/post/281470/
Причем тут система, железо то тот же самое и форматы файлов те же. Почему вдруг появилась привязка к системе? Что такого требует «hello world» что ему мешает пускаться на winxp. Тут только одно объяснение — кому-то это выгодно.
Более того новые редакции C++ вводят эти самые deprecated и не очевидное поведение очень шустро. То что раньше можно было использовать становится UB. Уже кто-то говорил «В случае UB gcc старается генерировать максимально не корректный код». А чудеса оптимизации, когда бесконечные циклы вдруг возвращают управление.
Старый код который собирался и работал либо уже не собирается, либо собирается, но не пускается на старых системах, либо работает не корректно и надо отлавливать новые баги.
Почувствовал
А что должен вернуть такой код на разных редакциях C++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void operator delete(void* ptr) { free(ptr); }
void* operator new(size_t sz) {
    void *dst=malloc(sz);
    if (dst) memset(dst,0xFF,sz);
    return dst;
}

struct A { int x; };

struct B : A { A a; int y; };

int main(int argc,char** argv) {
    A *a=new A();
    B *b=new B();

    printf("a->x=%d\n",a->x);
    printf("b->x=%d\n",b->x);
    printf("b->y=%d\n",b->y);
    printf("b->a.x=%d\n",b->a.x);

    delete b;
    delete a;
}
Теперь можно объявлять вот такие фунцкии:
struct Add {
    double x=0, y=0;
    operator double () { return x+y; }
};

double z=Add{ .y=20, .x=10 };
По умолчанию оно генерит бинарники не совмистимые с winxp и даже линковщику нельзя указать версию winxp только через editbin. Поэтому всё что будет собираться без будет без поддержки winxp.
«Visual Studio 2017 умеет собирать под WinXP при использовании тулсета v141_xp» — его специально сделали таким кривым?
Ладно microsoft, но кроме visual studio есть другие компиляторы. Так вот они наотрез отказываются под winxp компилить и пускаться. К чему бы это? Такая зависимость сильная зависимость от AVX или все резко осознали что без conditional_variables жини нет?
На древнем C можно под любую кофеварку бинарник собрать, в тоже время современный C++ ограничивает только популярными платформами, C++11 под WinXP уже не работает. Т.к. все используют инструменты которые так или иначе собираются C++ то это очень похоже на целенаправленный механизм выдавливания старых платформ. Например PHP и cygwin уже не пускается под XP, хотя особых оснований для этого нет. Собственно это еще одна из причин по которой на новые версии C++ не привлекательны.
Лучше покажите как строятся «хорошие программные модули» на современном C++
Почему в pdf для этого же есть djvu
Побывали переименовывать файлы в nautilus по F2 так что бы в новом названии появились как русские так и латинские буквы? ( например 123.txt -> 01-файл-readme.txt ) И какие при этом возникали эмоции?
И где обещеный опыт? Как у вас работает bluetooth при сопряжении устройства и последуещем уходе в спячку и возвращении обратно? Повесть о подключнии принтера и настройке сетевой шары. Как запускали Skype. На что заменили «чудо» аудиоплеер rhythmbox. Как подключали внешний монитор. Как настраивали удалённый доступ…
А какие у вас размеры WAR файлов в гигабайтах?
Обычно проводят множество экспериментов с разными данными и на разных машинах и потом усредняют и получают данные с доверительными интервалами. У вас на графиках погрешностей что-то не видно.

Современные процессоры не так просты как может показаться: Сache, Branch prediction, AMD SenseMI, ...
Так что в вашем частном случаем может и быстрее. А если еще использовать и возможности современных процессоров то можно сделать еще быстрее. Но на теоретическую асимптотику это не повлияет.

С другой стороны сортировка пирамидой имеет очень простой алгоритм и понятную асимптотику
struct PSort {
	virtual void swp(int i,int j)=0;
	virtual void cmp(int i,int j)=0;
	void  psort(int n) { // O(n*ln(n))
		int i,r,c;
		for(i=n/2;i>=0;i--) { pfix(i,n); }
		for(i=n-1;i>=0;i--) { swp(0,i);pfix(0,i); }
	}
	void pfix(int i,int n) {
		int c,r;
		for(r=i;r*2<n;r=c) {
			c=r*2; if (c<n-1 && cmp(c,c+1)<0) c++;
			if (cmp(r,c)>=0) break; swp(r,c);
		}
	}
};

А в другом направлении работает?
Вот интересно что будет если в один прекрасный день Роскомнадзор заблокирует доступ к серверам ОФД.
Надо создавать как можно больше новых сфер которые им надо будет регламентировать, а то заняться нашим законотворцам совсем нечем.
Вот почему в ядре linux пишут на C, а не на C++.
Если уж с открытием фала такой геморой, представлю что там со всем остальным.
Если вы не доверяете программисту пишите на Go.
Интересно почему для спутникового и цифрового телевидении до сих пор нет подобных списков блокировки? Недоработка бешеного принтера.
Интернет будет по талонам и баузер будет специальный или административная ответственность — «министерство изобилия»

Про VPN вспомниля анекдот:
Мужчину судят за самогоноварение, так как нашли у него дома самогонный аппарат.
— Вы признаете, что гоните самогон?
— Нет, не гоню!
— Аппарат есть, значит гоните!
— Не гоню!
— Ваше последнее слово!
— Прошу судить меня также и за изнасилование!
— А вы еще и кого-то изнасиловали?!
— Нет, но аппарат есть!

Очень порадовало в конце документа:

Финансово-Экономическое обоснованае

Принятие Федерального закона «О внесении изменений в
Федеральный закон „Об информации, информационных технологиях и о
защите информации“ не потребует дополнительных расходов из
федерального бюджета.

Т.е. этот банкет будет за наш же счет

Информация

В рейтинге
6 488-й
Откуда
Калужская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Инженер встраиваемых систем, Архитектор программного обеспечения
Старший
От 750 000 ₽
Linux
C++
PHP
Java
Docker
SQL
Hibernate
Java Spring Framework
Высоконагруженные системы