LINUX.ORG.RU
ФорумTalks

Декларация противодействия обману

 , ,


0

6

Уважаемые читатели!

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

Проект следующий: есть арм со встоемым плисом. на арме нужен был линукс, тсп, три rs232 и axi4-lite (последнее как раз не сделано ещё, сейчас разбираюсь с этим как раз). В качестве линукса взял petalinux, с тсп работаю через gen_tcp, с rs232 - использую socat - /dev/ttyPS1,115200,raw. Для axi4 пока не знаю, придётся чего-то писать на С.

Так вот, ребята, что я хочу сказать. С плюс плюс - это РАК. Да, это рак современной айти индустрии. Именно он виноват в том, что самолёты падают, жёсткие диски сыпятся, а летом в кранах нет горячей воды. Именно это еб****е поделие виновато в во всех наших бедах. Даже коррупция и инфляция - результат того, что это уг до сих пор используется в индустрии.

Теперь я, nanoolinux, торжественно клянусь сделать всё, что-бы запретить сиплюсплюс на государсвенном уровне. Сделать его символом глобального фейла и знамением неудачи. Я клянусь говорить правду о сиплюсплюс везде и всюду, что бы люди знали, что их обманывают. Ради собстсвенной наживы или же лулзов им нагло лгут о том, что сиплюсплюс универсальный язык программирования высокого уровня с поддеркой множества парадигм и архитектур. Знайте! Если вы услышали такое от человека или робота здесь или ещё где, то это либо лгун и тролль, либо потерянная и заблудшая душа. Я призываю вас всячески выводить их на чистую воду (если это лжец) либо пожалеть и лечить (если это потерянный).

За нами правда! И да прибудет с нами сила!

Лор, тридцать первое июля две тысячи четырнадцатого года от рождества христова, подпись.

★★★★

Последнее исправление: nanoolinux (всего исправлений: 1)

Ответ на: комментарий от grim

Вопрос не в том, могу ли я на нём писать или нет. Вопрос в затратах времени на разработку и на качество продукта в результате.

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от nanoolinux

Есть мнение: большая часть легаси — говнокод.

Что на яве, что на питоне, что на плюсах.

Так что при работе с легаси будешь плеваться от любого языка.

anatoly
()
Ответ на: комментарий от nanoolinux

Мне достаточно своего опыта.

Для тупой жирноты - да. Для агрументированного вброса - нет.

А ты и дальше ковыряй дебагером непроинициализированые указатели, я ж тебе не запрещаю.

Последний раз такое было годика 3 назад, так что мимо кассы.

Pavval ★★★★★
()
Ответ на: комментарий от nanoolinux

Вы не правы.
Это вопрос наличия людей с мозгами.

По мере развития IT обнаружился недостаток людей у которых достаточно мозгов и в мэйнстрим пошли языки программирования вроде Java и C# которые позволяют утилизировать массу людей не способных писать на С++

Следующим этапом развится IT стала популяризация ЯП на которых можно писать программы не имея мозгов необходимых для изучения Java и C# например Javascript и PHP. Я не говорю что все программисты на Javascript и PHP не имеют мозгов. Я говорю о барьере, который нужно преодолеть для того чтобы создать первую программу и знаниях, необходимых для того чтобы создать вэб сайт и продолжать программировать на них.

Т.е. все эти Scala, Rust, Erlang, Scheme, Lisp, Haskell никогда не завоюют популярности, так как требуют больше усилий для изучения и программирования чем Java, C# и тем более Javascript и PHP

Следующее поколениe mainstream ЯП будет проще а не сложнее для того чтобы утилизировать людей не способных к освоению Javascript и PHP

И это не только моё мнение.

grim ★★☆☆
()
Последнее исправление: grim (всего исправлений: 1)
Ответ на: комментарий от stevejobs

стандартные средства, как то malloc/new, работают медленно

медленно по сравнению с чем?

Harald ★★★★★
()

С плюс плюс - это РАК.

Ох, да. Тут недавно видел сериал «Revolution», так там искин, написанный на 2000 строк C++ мог контролировать людей, крыс и светлячков, заживлять раны и оживить труп двухчасовой давности. Но он не смог разобраться в собственных исходниках и исправить утечку памяти. :)

atrus ★★★★★
()

В Эрланге непривычно без строк и ограниченного целого типа. Поначалу.
Вот как поступил Джо Армстронг (источник):

Когда начал набирать популярность C++, я попытался прочитать про него книгу… До сих пор осталась вмятина на стене за пианино, куда я ее швырнул в порыве гнева! Ведь я считал, что усовершенствование C должно сделать вещи проще, а все оказалось еще более запутанным!


Я бы сделал точно так же, если бы у меня такая книга была бумажной.

blexey ★★★★★
()
Ответ на: комментарий от grim

В общем здравое зерно в твоих рассуждениях есть, я может быть даже с ними согласен. Только не надо отклонятся и делать фетишь из языка.

Видишь ли, писать ерлангисту на С всё равно придётся. Некоторые проникшиеся духом фп могут тянуться к экзотике вроде ocaml например, но общая схема одна и та же: написать базовую часть на фп, а низкоуровневую указательщину, которая вынуждена делать ммап каким нибудь /dev/mem (и что-либо в таком духе) на чём то вроде unsafe. Причём этот unsafe есть в очень большом количестве языков, возникших в последнее время. даже в хаскеле есть. Ну и раст туда же. Конечно, на эрланге нельзя рулить памятью вручную или делать другие низкоуровневые штуки, но для описания общего и глобального алгоритма работы програмы он подходит идеально.

В этом контексте спп - целиком и полностью unsafe. Т.е. очевидное присутствие возможности сделать себе больно даже там, где это не нужно. Тот же легаси код, про который я упоминал, при скрупулёзном анализе показывает, что в принципе в том проекте на С могла бы быть написана одна единственная ф-ия, (обработка потока данных, коих очень много). А остальная шняга, например парсинг конфиг файлов и конфигурирование девайса можно было сделать да хоть на питона. Спрашивается, нахрена там спп вообще? Для быстрого исполнения? Да вы упоролись! Нахрен мне экономить микросекунды парсинга конфигурационных файлов если это выполняется один раз в сутки?

В результате получается следующая вещь. Не нужно искать «замену спп», как тут некоторые кричат. Его надо просто сжечь. Так как замена уже давно есть в виде тех же хаскелей, питонов и прочих, умеющих ffi для С или любого другого «unsafe» языка, на котором будет написана лишь очень малая часть, в которой производительность важна.

Короче, как хотите, но для меня мой проект - эпик вин, который только лишь подтверждает изложенное выше.

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от stevejobs

Подтверждаю, что: работа со строками убога, в множественном наследовании легко запутаться(в C# предоставление интерфейсов намного лучше), непонятен смысл структур, когда есть классы(в C# есть четкое разделение на типы данных и ссылочные типы) шаблоны просто бесят(не сами по себе, а реализация).

P.S Не программист, но простой студент, изучающий C++, C#.

IceRain
()
Ответ на: комментарий от nanoolinux

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

asaw ★★★★★
()
Ответ на: комментарий от IceRain

Ну свои трудности ты рассказал. А к С++ какие претензии?

Pavval ★★★★★
()
Ответ на: комментарий от nanoolinux

спп - целиком и полностью unsafe.

Очевидно вы не изучили ЯП и пытаетесь его ругать.
Ещё Срауструпп советовал не использовать ВСЕ возможности С++ а только те, которые вам удобны.

Не получается работать с указателями - не пользуйтесь.

Используйте возможности С++ по управлению объектами.

grim ★★☆☆
()
Ответ на: комментарий от grim

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

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от IceRain

в множественном наследовании легко запутаться

например?

в C# предоставление интерфейсов

только вот интерфейсы — это сильно порезанное множественное наследование

непонятен смысл структур

совместимость с Си. хотя, на мой взгляд, правильнее было бы структуры сделать POD

работа со строками убога

например?

next_time ★★★★★
()
Ответ на: комментарий от asaw

Какой у тебя либастрал мощный, а! Я аж прямо шатаюсь под действием сканирующих лучей.

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

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

А список ты всё таки распиши, продемонстрируй так сказать свои собственные знания в этом не лёгком деле.

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от next_time

этот баян старше Храма Василия Блаженного и Церкви Покрова на Нерли вместе взятых

const volatile int three = 3; // капитан очевидность
printf( "three=%d\n", three );

volatile int *ptr;
ptr = (int*)( &three );
*ptr = 5; // have a nice debug

printf( "three=%d\n", three );
stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

и что? не увидел в этом примере константы. увидел только переменную с квалификатором volatile, которая трактуется как «вне зоны ответственности компилятора».

вы с константой пример дайте, как обещали

next_time ★★★★★
()
Ответ на: комментарий от next_time

более того, ты врешь, volatile (C++) - «A type qualifier that you can use to declare that an object can be modified in the program by the hardware.»

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

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

А теперь расскажи, зачем в реальной жизни ты будешь константу обзывать volatile. А за старую студию мы тут все дико рады - пусть и дальше UB не ловит.

Pavval ★★★★★
()
Ответ на: комментарий от stevejobs

«более того, ты врешь» — нет, ЕМНИП, цитирую какую-то книгу.

«can be modified in the program by the hardware» — что не так-то? может хардварой, а может и чем-то другим. в первую очередь, на десктопе, это вообще нужно для многопоточности, т.е. как раз из самой же программы менять.

«свой константы» — какой константы, если объект объект объявлен как «can be modified»? это не константа, а весьма удобная фича, позволяющая, сделать объект, неизменным везде, кроме нескольких мест, например, неизменным в одном потоке и изменяемым в другом

next_time ★★★★★
()
Ответ на: комментарий от stevejobs

вот старый Microsoft Visual Studio - нет

виндузятникотраблы

next_time ★★★★★
()
Ответ на: комментарий от next_time

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

вот замечательно-то! особенно когда в другом месте меняет другой человек, а ты потом have a nice debug! всю жизнь мечтал о такой фиче, которая добавляет седых волос на голове!

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

может хардварой, а может и чем-то другим

14882-2011, 1.9.12

Accessing an object designated by a volatile glvalue (3.10), modifying an object, calling a library I/O function, or calling a function that does any of those operations are all side effects, which are changes in the state of the execution environment. Evaluation of an expression (or a sub-expression) in general includes both value computations (including determining the identity of an object for glvalue evaluation and fetching a value previously assigned to an object for prvalue evaluation) and initiation of side effects. When a call to a library I/O function returns or an access to a volatile object is evaluated the side effect is considered complete, even though some external actions implied by the call (such as the I/O itself ) or by the volatile access may not have completed yet.

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

а ты потом have a nice debug!

а что не так?

особенно когда в другом месте меняет другой человек,

но ведь так и задумано

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

вы путаете константность с неизменностью

are all side effects

и что?

next_time ★★★★★
()
Ответ на: комментарий от nanoolinux

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

С той частью, которая относится к совместимости с C, как-то знаком. Со всем остальным - не очень. С C++11 - вообще нет. Это уже не говоря о том, как готовить.

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

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

asaw ★★★★★
()
Ответ на: комментарий от next_time

вы путаете константность с неизменностью

WAT

эпик

это не константа, а весьма удобная фича

теперь уже константа - не константа. Вы путаетесь в показаниях.

но ведь так и задумано

для тех кто меняет константы предусмотрено особое место в аду, с САМЫМИ злыми чертями! А при жизни их просто пинают ногами!

побойся б-га, «так и задумано»

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

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

WAT

а то, что константа — это объект, значение которого неизменно на всём времени его существования. вы же объявили его «изменчивым» https://translate.google.ru/#en/ru/volatile — очевдно, что изменчивый объект не может быть константой

для тех кто меняет константы

константы нельзя изменить, по определению. можно изменить _некоторые_ объекты, объявленные с модификатором const

C++ не позволяет организовать неизменяемость своих данных никаким разумным способом

 const int three = 3; 

всего-то надо не ставить модификатор volatile в объявлении

next_time ★★★★★
()
Ответ на: комментарий от stevejobs

Я бы на месте джавистов вообще молчал бы в тряпочку про поддержку организации неизменяемости.

asaw ★★★★★
()
Ответ на: комментарий от Pavval

Не могу ответить тебе так, как ты хочешь :( Потому что вообще С++ использовать не буду, только если вдруг захочется потасовать в раме десятки гигабайтов чиселок. Но это будет не использование языка, а просто вызов апи для перемещения чиселок, из какой-нибудь Clojure, Erlang, Scala, OCaml. И скорей всего это будет Си, на не C++.

stevejobs ★★★★☆
()
Ответ на: комментарий от next_time

очевдно, что изменчивый объект не может быть константой

значит нужно запретить использовать const вместе с volatile.

поправочка, нужно БЫЛО запретить. Они так и тащат всякую чушь по причине совместимости. Теперь уже горбатого только могила исправит.

и это толкает разработчиков компиляторов писать всякое говнецо (см. пример с MSVS)

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 3)
Ответ на: комментарий от nanoolinux

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

Странно, что понимая это вы плюетесь дерьмом в ЯП, который как признаетесь, не даже не изучили.

Как результат - куча говнобиблиотек на все случаи жизни.

это вы Java и Perl не видели :)

grim ★★☆☆
()
Ответ на: комментарий от stevejobs

значит нужно запретить использовать const вместе с volatile.

зачем? это же удобная фича. вот переназвать эти квалификаторы было бы можно. но тогда бы совместимость с С нарушилась.

да и потом, если вы не знаете принципы работы volatile, зачем вообще используете?

next_time ★★★★★
()
Ответ на: комментарий от next_time

всё это было бы полной ерундой, если бы других языков не существовало в природе. Но они существуют. Нахрена всё писать на Крестах кроме гиперкластеров работающих с стопицоттерабайтами данных непонятно. (Кстати, кто-нибудь вообще видел живого программиста супергиперкластера на С++?)

а на выходе мы получаем, например, опенсорц, написанный поголовно на крестах, в код которого за вменяемые сроки никто не успевает вкуриться. Ну нельзя вот так просто взять, и за вечер разобраться, как работает какая-то опенсорцная прога и послать туда патч. А в результате мы получаем говняно выглядящий забагованный софт. И молодежь идет не писать опенсорц, а кодить на C# под Шиндовс, потому что на C# под Шиндовс кодить удобно и приятно, в няшной IDE с Решарпером.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Нахрена всё писать на Крестах

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

Ну нельзя вот так просто взять, и за вечер разобраться, как работает какая-то опенсорцная прога и послать туда патч

тащем-то можно. мне, например, понравился код движка cube2

next_time ★★★★★
()
Ответ на: комментарий от stevejobs

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

на моей ОС такого нет.

потому что на C# под Шиндовс кодить удобно и приятно, в няшной IDE

одаааа удобно

private void func1();
private void func2();
private void func3();
...
private void func100500();

на плюсах-то один раз «private:» написал и усё норм. это только как пример, такого мусора в шарпе навалом. но шарп ещё не так плох, как ява: там хоть unsigned типы есть, в отличие от этого вашего копи-лювака.

next_time ★★★★★
()
Ответ на: комментарий от next_time

вы путаете константность с неизменностью

Да ты упорот! Скорость света это константа или неизменяемая переменная?

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от grim

это вы Java и Perl не видели :)

Признаю, не видел и рад. Можно на ты, спасибо.

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от stevejobs

а на выходе мы получаем, например, опенсорц, написанный поголовно на крестах, в код которого за вменяемые сроки никто не успевает вкуриться. Ну нельзя вот так просто взять, и за вечер разобраться, как работает какая-то опенсорцная прога и послать туда патч. А в результате мы получаем говняно выглядящий забагованный софт. И молодежь идет не писать опенсорц, а кодить на C# под Шиндовс, потому что на C# под Шиндовс кодить удобно и приятно, в няшной IDE с Решарпером.

анука плюсанука!

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от next_time

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

Все три шняги работают в ядре, а оно, сами знаете, на С написано, а не сплюсплюс. А всё почему? Да потому-что сплюсплюс - РАК!

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от next_time

на плюсах-то один раз «private:»

Зато ошибки в шаблонах очень коротенькие и понятные. Их очень легко разбирать и читать)

nanoolinux ★★★★
() автор топика

Зачем нужно писать на тормозном раке мозга эрланге если есть джава?

reality_hacker
()
Ответ на: комментарий от next_time
kotik@kotik-laptop:/tmp:1> cat const_test.c 
#include <stdio.h>

int main(void)
{
        const int three = 3;
        printf("%d\n", three);

        int *p = (int *) &three;
        *p = 5;
        printf("%d\n", three);

        return 0;
}
kotik@kotik-laptop:/tmp:0> clang -Wall const_test.c 
kotik@kotik-laptop:/tmp:0> ./a.out 
3
3
kotik@kotik-laptop:/tmp:0> gcc -Wall const_test.c 
kotik@kotik-laptop:/tmp:0> ./a.out 
3
5

Так и должно быть, да?

Kotolegokot
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.