LINUX.ORG.RU

Способы выстрелить себе в ногу

 ,


2

6

Раз уж сегодня день нубских вопросов... Господа, делитесь способами стрельбы себе в ногу (или сразу в голову). Начну первым: вызвать чисто виртуальную функцию. Ну и классика жанра - указатели.

★★★★★

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

Вы писали, что

C и C++ так не могут.

Ограничений не прописывали. И варнинг — не ошибка же.

$ cat print.c 
#include <stdio.h>

int main(void)
{
	hello();
}

void hello(void)
{
	puts ("Hello!");
}
$ gcc print.c 
print.c: In function ‘main’:
print.c:5:2: warning: implicit declaration of function ‘hello’; did you mean ‘ftello’? [-Wimplicit-function-declaration]
  hello();
  ^~~~~
  ftello
print.c: At top level:
print.c:8:6: warning: conflicting types for ‘hello’
 void hello(void)
      ^~~~~
print.c:5:2: note: previous implicit declaration of ‘hello’ was here
  hello();
  ^~~~~
$ ./a.out 
Hello!
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --enable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 8.1.1 20180502 (Red Hat 8.1.1-1) (GCC)

Deleted
()
Ответ на: комментарий от eao197

Там, где эти языки C++ могли заменить, они уже заменили. Сейчас C++ живет либо в легаси (и удачи вам в переписывании 20-летнего MFC-шного или wxWindows легаси на Haskell-е), либо там, где производительность и ресурсоемкость, работа с системным API, контроль за происходящим и пр. не пустой звук.

Вот с этого, блин, и надо было начинать. С легаси ясен хрен никто ничего делать не будет. Программы же для работы с системным API вообще наплевать на чём писать.

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

Программы же для работы с системным API вообще наплевать на чём писать.

Ну вот выше упоминался FB-шный Katran, который на современном C++ дергает системный API. Почему-то его написали на C++, а не на чем-то другом. Подозреваю, что это же не спроста же.

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

А ещё знающие люди говорят, что этот компилер отсылает телеметрию.

Ну и хотелось бы увидеть статистику либ, которые запросто собираются под линем и маком. А то окажется что каждая вторая завязана на winapi и .Net

Та же история, что и со swift.

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

Я надеюсь это сарказм.

На данный момент даже таблица с «прилипшим» заголовком - это экспериментальная фича.

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

А ещё знающие люди говорят, что этот компилер отсылает телеметрию.

Телеметрию еще и VC++ отсылал, пока скандал не подняли.

Та же история, что и со swift.

Про запущенные в продакшен на Linux-е проекты на Swift-е слышать не приходилось, в отличии от оных на .NET Core.

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

Браузер - самый продвинутый из универсальных GUI-тулкитов. И самый знакомый массам.

Я надеюсь это сарказм.

Ни в коей мере.

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

Я уверен что кто-то уже использует .Net Core в продакшине на лине, но интересно было бы почитать про сопутствующие проблемы. Как-никак, язык почти 15-20 лет был win-only. За вечер всё не перепишешь.

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

но интересно было бы почитать про сопутствующие проблемы.

Да на одном только Хабре куча статей про .NET Core и Linux: https://habr.com/search/?q=.NET Core Linux#h

В англоязычном сегменте Интернета этого добра должно быть еще больше.

язык почти 15-20 лет был win-only

Язык? Сильно сомневаюсь, иначе бы Mono не получилось бы вообще.

Вот .NET Framework — наверняка, плюс огромное количество программ, которые под Windows на .NET были написаны с использованием как WinAPI, так и COM-компонентов.

А что бы от этого избавится, MS и пошел по пути открытия .NET-а и создания кросс-платформенного .NET Core.

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

Mono не взлетел, поскольку изначально MS пыталась использовать C# и .NET как способ «привязать» разработчиков к своей собственной платформе. Поэтому у MS не было интереса превращать .NET в кросс-платформенный инструмент.

Теперь времена изменились и у MS принципиально другая позиция. Отсюда и большие вложения в .NET Core.

Поскольку самому .NET Core пока еще немного лет, наверняка это еще сырая штука с массой «белых пятен».

Но, с другой стороны, компания MS, которая вкладывается в .NET Core и делает C# действительно кросс-платформенным инструментом, это посильнее Mozilla с Rust-ом. Особенно с учетом того, что языки с GC сейчас гораздо более восстребованны, чем без оного. Особенно, с учетом большого количества .NET-разработчиков.

Так что по части рисков, .NET Core может выглядеть намного безопаснее, чем Rust.

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

Если функцию все равно придётся объявлять, то какая разница, когда это делать:до или после использования? Хотя твои претензии к объявлениям в си давно не актуальны

tyro33
()
Ответ на: комментарий от RazrFalcon

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

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

Да только вот выясняется, что в ней уже это все есть.

Сишка безопасна, если думать головой. (с)

Знаем, плавали.

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

Так что по части рисков, .NET Core может выглядеть намного безопаснее, чем Rust.

Учитывая ажиотаж вокруг покупки GitHub микрософтом и множественными попытками сбежать на GitLab я бы не сказал, что люди в восторге от политики MS.

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

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

Да и с любителями проприетарных зондов тоже спорить сложно.

Интересно, вам на работе деньги за разработку OpenSource-продуктов платят?

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

Даже не знаю, что сказать.

Программирование, для очень многих, это работа. Которая делается за деньги. А деньги, как правило, платятся за решение конкретных и частных задач. Т.е. за сплошную проприетарщину. Делать проприетарщину самому и ругать проприетарщину C#/Java — это несколько шизофренично.

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

Я собираю с -Wall -Wextra. -Werror даёт какие-то новые предупреждения?

Deleted
()
Ответ на: комментарий от eao197

Одно дело пилить проприетарщину на свободном языке, а другое - пилить на проприетарном, который завтра сделают платным, сломают, забросят.

За примерами далеко ходить не надо, достаточно вспомнить судебные разбирательства между Oracle и Google.

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

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

А это ваши риски или риски вашего работодателя? Это же он будет платить за лицензии. Причем платят, например, за Eiffel Studio или за GNAT Pro.

Ну или вот Perl открыт, сильно ли ему лучше, чем какому-нибудь PowerBuilder-у?

За примерами далеко ходить не надо, достаточно вспомнить судебные разбирательства между Oracle и Google.

Ну и как на вас это отразилось? Или как это отразилось на ком-то, кто пилил прикладной софт на Java?

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

А это ваши риски или риски вашего работодателя?

Это риски того, кто подсел на иглу.

Причем платят, например, за Eiffel Studio или за GNAT Pro.
Ну или вот Perl открыт, сильно ли ему лучше, чем какому-нибудь PowerBuilder-у?

А теперь берём проприетарный Sublime Text, который был убит VS Code. При этом за первый ещё и платить нужно было.

Ну и как на вас это отразилось? Или как это отразилось на ком-то, кто пилил прикладной софт на Java?

На мне - никак. На Google - прилично. Или Google не работодатель?

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

А теперь берём проприетарный Sublime Text, который был убит VS Code.

Vim и Emacs убили все остальное в зародыше. Но хипстеры они вообще любители обмазываться разным калом. Перформанс!

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

Это риски того, кто подсел на иглу.

Ну, т.е. не ваши. Так с чего бы вас это беспокоило?

А теперь берём проприетарный Sublime Text, который был убит VS Code.

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

На мне - никак.

О том и речь.

На Google - прилично. Или Google не работодатель?

Так ведь и у Google его софт, который был написан на Java, спокойно себе продолжает разрабатываться на Java. Пострадало желание Google сделать свою JVM и свою реализацию JRE. Это не имеет ничего общего с обычным использованием ЯП для решения своих задач.

А вот Go от Google — он как, проприетарный или как?

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

Ну, т.е. не ваши. Так с чего бы вас это беспокоило?

Сегодня не мои, а завтра мои.

Во-первых, пример из совсем другой области.

С чего бы это вдруг?

Во-вторых, был ли убит?

Да.

Мои знакомые, как пользовались, так и продолжают, в том числе и деньги заносят.

А мои - нет. Дальше что? Популярность Sublime'а падает катастрофически. И вина - проприетарность.

Это не имеет ничего общего с обычным использованием ЯП для решения своих задач.

Хватит натягивать сову на глобус. Речь шла о возможных проблемах использования злой проприетарщины, за что гугл и поплатился. Пострадали ли от этого «обычные пользователи» или даже я сам - роли не играет. Java выбрал сам Google.

А вот Go от Google — он как, проприетарный или как?

Такой же как и .Net Core. Ибо завтра могу закрыть и никто и не пикнет. А в одиночку такое не потянешь. Вон даже мозила еле тянет раст.

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

а завтра мои

Т.е. вы ссытесь заранее? Отрадно.

С чего бы это вдруг?

С того, что текстовый редактор — это не язык программирования.

Популярность Sublime'а падает катастрофически.

Может это только в вашей голове?

И вина - проприетарность.

Пруфы и того, и другого не помешали бы.

Речь шла о возможных проблемах использования злой проприетарщины

Использование Java и создание собственной Java — это разные вещи.

Пострадали ли от этого «обычные пользователи» или даже я сам - роли не играет.

Еще как играет. Если, конечно, речь идет о том, чтобы работающие продукты делать и деньги зарабатывать. А не языками про OpenSource чесать.

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

Т.е. вы ссытесь заранее? Отрадно.

Мы вроде не во дворе. Или у вас так принято?

С того, что текстовый редактор — это не язык программирования.

Все ходы записаны (с) же. Речь шла не только про яп, но и про редакторы/IDE:

Причем платят, например, за Eiffel Studio или за GNAT Pro.

Может это только в вашей голове?

Главное что в вашей голове всё верно.

Пруфы и того, и другого не помешали бы.

Спросить Вангу под расписку?

Использование Java и создание собственной Java — это разные вещи.

Опять юлим?

Если, конечно, речь идет о том, чтобы работающие продукты делать и деньги зарабатывать.

Ну вот Google разрабатывала и зарабатывала. Но Oracle это не понравилось.

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

Или у вас так принято?

Это я пытаюсь выяснить, откуда у вас предубеждение перед несвободными ЯП. Пока что напрашивается вот такой вот вывод.

Речь шла не только про яп, но и про редакторы/IDE

Если вы думаете, что EiffelStudio — это редактор/IDE, то это от неграмотности.

Спросить Вангу под расписку?

Т.е. это вам Ванга поведала про то, что Sublime был убит Atom/VSCode? Тогда понятно.

> Использование Java и создание собственной Java — это разные вещи.

Опять юлим?

Объясняем очевидное, ваш К.О.

Ну вот Google разрабатывала и зарабатывала. Но Oracle это не понравилось.

Google разрабатывала свою реализацию JVM и JRE. Это не имеет отношения к использованию Java при разработке обычных проектов.

Или вас интересует возможность создания своей реализации C#/Java/Go и пр. несвободных языков?

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

Если вы думаете, что EiffelStudio — это редактор/IDE, то это от неграмотности.

Просто мои категории не совпадают с исключительно правильными, т.е. вашими.

Это не имеет отношения к использованию Java при разработке обычных проектов.

В данном, конкретном случае - вероятно нет. Но кто знает что завтра взбредёт ораклу в голову.

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

Просто мои категории не совпадают

...с объективной реальностью из-за ограниченного кругозора, если говорить политкорректно.

Но кто знает что завтра взбредёт ораклу в голову.

Т.е. если бы кто-то следуя вашей логике 20 лет назад предпочел бы остаться на C++ вместо использования Java (или 15 лет назад отказался бы от использования C#, или 5 лет назад оказался бы от использования Go), то он бы что-то выиграл?

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

с объективной реальностью

Есть два мнения: моё и неправильное. (с)

то он бы что-то выиграл?

Вопрос в выборе между свободным языком и проприетарным. Некоторые просто пишут свой, типа Rust, Swift или Go.

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

У вас еще и с памятью проблемы, ну совсем болезный. Вот что вы чуть раньше про Go сказали:

Такой же как и .Net Core. Ибо завтра могу закрыть и никто и не пикнет.

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