- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
struct X {
int x;
int y;
X(int y_) :
y(y_),
x(y + 10)
{
}
};
int main()
{
X foo = X(16);
std::cout << "foo == (" << foo.x << ", " << foo.y << ")" << std::endl;
}
PolinaAksenova 12.05.2021 21:29 # 0
☆*:.。.o(≧▽≦)o.。.:*☆
gcc и clang выдают ворнинг, MSVC — молчит.
Soul_re@ver 12.05.2021 21:47 # 0
MAKAKA 12.05.2021 21:51 # 0
неужели сложно запомнить?:)
на самом деле /Wall наверное тоже сработает
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/c5038?view=msvc-160
Soul_re@ver 12.05.2021 21:57 # +2
Говнокод справочный
> на самом деле /Wall наверное тоже сработает
Wall включает ещё какую-то хуйню, которая срабатывает даже на их стандартную библиотеку. Поэтому оно не особо полезно.
warzes 26.08.2021 04:51 # +1
Плюс есть дефайн:
#define _STL_WARNING_LEVEL 3
Который также отключает варнинги в STL (но вроде ниже 3 уровня нельзя ставить - там еррор кидается)
Но я юзаю предкомпилированные заголовки, поэтому все инклуды на STL и зависимости у меня в одном месте (а не как у людей по всему коду размазаны всякие string или cstdlib.
PolinaAksenova 12.05.2021 21:54 # +1
j123123 12.05.2021 21:58 # 0
Типа как:
#pragma GCC diagnostic ignored "-Wuninitialized"
Soul_re@ver 12.05.2021 22:00 # 0
Можно врубить определённый варнинг на определённом участке кода, можно вырубить, можно вернуть на значение по умолчанию...
j123123 12.05.2021 22:05 # 0
PolinaAksenova 12.05.2021 22:09 # 0
MAKAKA 12.05.2021 22:10 # 0
STL и boost я вряд-ли буду править, а свой код я может хочу вылзизать до блеска
PolinaAksenova 12.05.2021 22:15 # 0
> The header files declaring interfaces to the operating system and runtime libraries often cannot be written in strictly conforming C. Therefore, GCC gives code found in system headers special treatment. All warnings, other than those generated by ‘#warning’ (see Diagnostics), are suppressed while GCC is processing a system header.
j123123 12.05.2021 22:11 # +2
(перегрузка вызова компилятора)
MAKAKA 12.05.2021 22:16 # 0
j123123 12.05.2021 22:19 # 0
MAKAKA 13.05.2021 01:41 # +1
Лучше уж тогда PS взять, но хуй знает скока он будет запускаться.
И я совсем не уверен, что в cproj можно так легко подменить компилятор на bat файл, и не объебаться при этом с аргументами, их экскейпингом итд, и что после этого любой msbuild мне это всё нормально соберет.
На юниксе нормально в Makefile напрограммить, а в студии на винде лучше быть аккуратным.
Действительно, лучше прикрутить статанализ типа пиваса (он он платный же)
А R# вроде гоняет clang-tidy под капотом (судя по номерам ошибок)
j123123 13.05.2021 01:50 # 0
Тоже мне проблема. Можешь на Си или на крестах написать эту логику, и скомпилировать в exe файл. Там нихуя сложного нет, надо тупо вызвать cl.exe с теми же параметрами, но еще добавлять или не добавлять /Wall в зависимости от пути к компилируемому файлу.
guest6 13.05.2021 01:55 # +1
можно обосраться с передачей аргументов
https://docs.microsoft.com/en-gb/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way
j123123 13.05.2021 01:53 # 0
Это ты серьезно? Там правда могут быть проблемы с тем, чтоб вместо вызова компилятора cl.exe эта IDE вызывала хуйню, которую я руками где-то прописал? Как вы таким говном вообще пользуетесь?
guest6 13.05.2021 01:58 # 0
Скорее, интуитивно. Может быть оно и заведется, но зуб бы я не дал (см выше консёрн с аргументами)
Недавно стало можно сувнуть любой компилятор
https://devblogs.microsoft.com/cppblog/use-any-c-compiler-with-visual-studio/
но я не удивлюсь, если там в коде IDE перечислены все 4 компилятора, а при попытке сунуть туда что-то не то можно словить какое-то говно
>Как вы таким говном вообще пользуетесь?
Когда пользуешься MS, лучше пользоваться официально документированными плюшками.
Пытаться что-то под себя кастомизировать может оказаться себе дороже. ИМХО
j123123 13.05.2021 02:53 # +1
> Недавно
Пиздец.
> Когда пользуешься MS, лучше пользоваться официально документированными плюшками.
Поэтому я против MS и их говностудии.
guest6 13.05.2021 03:25 # 0
XCode, знаете, тоже на винде не работает, и вижалси не умеет (и я даже не уверен, что он может gcc, бо официально у ябла шланг уже 7 лет как)
Хотя я согласен, что средства разработки от MS могли бы быть погибче: программист всё таки не обезьянка
j123123 13.05.2021 08:09 # +1
MAKAKA 13.05.2021 17:38 # 0
bormand 13.05.2021 17:40 # 0
Ну, чтобы не париться с особенностями msvc, к примеру.
MAKAKA 13.05.2021 17:41 # 0
bormand 13.05.2021 17:46 # 0
MAKAKA 13.05.2021 17:50 # 0
JloJle4Ka 13.05.2021 18:11 # 0
Сём, тебе кто пароль от этой учётки дал?
DypHuu_niBEHb 13.05.2021 19:52 # +1
gologub 13.05.2021 18:42 # +1
https://www.youtube.com/watch?v=8QCcmqaEMPI
Desktop 14.05.2021 00:49 # 0
j123123 14.05.2021 11:13 # +2
Иногда бывают такие библиотеки, которые говнокомпилятор вижуалстудии тупо не собирает или собирает, но получается какая-то багнутая хуйня, и происходит это из-за того, что мелкомягкие не соблюли стандарт, а не из-за каких-то там гнутых экстеншенов или асмовставок в коде той библиотеки. Самый банальный пример - open() в винде для бинарных файлов требует особую хуйню O_BINARY и O_TEXT для текста, в стандарте POSIX https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html такой хуйни не описано (а в стандарте Си функции open() нет вообще, мелкомягкие могли бы просто не реализовывать ее, если она им так не нравится, но они реализовали, насрав какой-то своей хуйни),и если тупо заюзать либу, которая прямолинейно через open открывает файл и читает некие байтики без всяких там костылей-специально-для-винды, оно обосрется.
bormand 14.05.2021 12:02 # 0
Дык она не open(), а _open() насколько я помню. Так что могут делать что хотят.
j123123 15.05.2021 04:57 # 0
Ну оно изначально было у них open() и на это имя оно все еще откликается
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/open?view=msvc-160
> The Microsoft-implemented POSIX function name open is a deprecated alias for the _open function. By default, it generates Compiler warning (level 3) C4996. The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
Т.е. "Да, мы насрали на стандарт в свое время, и теперь мы сделали _open(), но open() все еще поддерживается, мы продолжаем срать на стандарт для обратной совместимости со старым говнокодом"
MAKAKA 15.05.2021 14:07 # +1
Разгадка простая: Виндуос НЕ позикс совместимая ОС.
Если ты используешь что-то позиксовое, то на винде будет говно.
Или пиши fopen, который кросс-платфомернный, или на пинде юзай CreateFile
KoWe4Ka_l7porpaMMep 15.05.2021 14:59 # 0
MAKAKA 15.05.2021 15:18 # +1
Во всяком случае именно благодаря ему на макбуке и на сервере с линуксом баш и руби работают примерно одинаково)
KoWe4Ka_l7porpaMMep 15.05.2021 15:22 # 0
MAKAKA 15.05.2021 15:25 # +2
Стандарт включает в себя текст стандартов POSIX (IEEE 1003.1) и X/Open Curses, опираясь на стандарт C99 (ISO/IEC 9899:1999).
Кстати, макось и солярка -- UNIX
Дистры линукса (мейнстримные во всяк случае) и BSD -- нет
Оче дорого
KoWe4Ka_l7porpaMMep 15.05.2021 15:34 # 0
AMOGUS ;__;
Жалко, что многие дистры линукса не «Unix». Надеюсь, отойдя от стандартов, там что-нибудь умное придумали.
Зато там «posix», поэтому программы переносимы на уровне исходного кода, это хорошо :-)
booratihno 15.05.2021 16:51 # +3
Может какой нить RH с LTS 15 лет может позволить себе это для минобороны США, но у арчей и дебианов денег нет
Скорее всего, Linux и так почти полностью соответствует SUS, иначе бы много чего не работало
KoWe4Ka_l7porpaMMep 15.05.2021 16:52 # 0
gologub 15.05.2021 15:44 # +1
> BSD
это которые юзали формат PDP-7 в XXI веке?
в сперме был interix но потом его просралли
j123123 16.05.2021 06:29 # 0
> Если ты используешь что-то позиксовое, то на винде будет говно.
Зачем? Вот зачем разрабы винды сделали конкретно вызов open() говном? На-ху-я добавлять эту дрисню с O_BINARY и O_TEXT? Есть вызовы fopen и там есть "wb" "rb", вот через него и читайте текстовую парашу с учетом этой вот "/r/n" хуйни.
Я могу и про другие обсеры сказать, например там wchar_t 16-битный
https://ru.wikipedia.org/wiki/Широкий_символ
> В Windows API тип wchar_t именуется как WCHAR и имеет фиксированный размер 16 бит, что не позволяет кодировать весь набор символов Unicode (больше 1 миллиона). Поэтому нарушается стандарт ANSI/ISO C, который требует, чтобы символьный тип wchar_t поддерживал все представимые в системе символы в одном объекте wchar_t. По сути, в WinAPI под WCHAR подразумевается 2-байтное слово из кодировки UTF-16LE (как тип WORD), поэтому символы с кодами выше FFFF16 кодируются парой WCHAR (так называемые «суррогаты») и всем API-функциям передаётся не количество символов, а размер символьного массива в машинных словах.
Это имеет какое-то отношение к позиксу или не-позиксу?
bormand 16.05.2021 10:26 # +1
Хуёво быть первопроходцем, да. Тогда все думали, что 16 бит хватит для всех...
Поэтому, когда стандартизаторы юникода досыпали ещё говносимволов, майкрософт оказался между джвух стульев и вынужден был перейти на UTF-16.
З.Ы. Емнип, была где-то статья что майки сами жалеют о том, что завязались на 16 бит и не подумали, что юникод может так разрастись.
j123123 16.05.2021 10:55 # +2
Как-то они очень хуево думали. Сколько там всяких символов в японском-китайском наберется? Уж наверняка больше 65536. А есть еще дохуя всяких других языков.
j123123 16.05.2021 11:00 # 0
> Сложно определить точное количество иероглифов в китайском языке. Приведем некоторую статистику:
> Стандарт грамотности в Китае — это 1500 иероглифов для сельской местности или 2000 иероглифов для городов и для служащих в селе.
> 3000 иероглифов достаточно для чтения газет и неспециализированных журналов.
> Словарь иероглифов «Чжунхуа цзыхай» (1994г) издания содержит 85 568 иероглифов
> Пятое издание «Словаря китайских иероглифов и их вариантов» содержит 106 230 иероглиф
Как всё сложно. Именно поэтому я за ASCII
JloJle4Ka 16.05.2021 11:16 # +2
3oJIoTou_xyu 16.05.2021 11:31 # +2
3oJIoTou_xyu 16.05.2021 11:37 # +3
JloJle4Ka 16.05.2021 12:18 # +3
bormand 16.05.2021 10:31 # +3
Тлен и безысходность.
MAKAKA 16.05.2021 15:14 # +1
На винде вообще работа с кодировкой ебанутая.
CRT всегда высирает в той кодировке, которая стоит у консоли.
Там как-бы есть юникод, но сломанный.
ABryCTOBCKuu_nemyx 26.08.2021 08:56 # 0
bormand 13.05.2021 08:11 # +1
Думаешь кому-то хочется искать, что там надо поправить в этом ебучем xml? Да ещё и с ебучим виндовым ограничением на длину командной строки из-за которого списки файлов идут через файл...
Но вообще, существующие анализаторы умеют туда встраиваться. Так что какая-то механика есть.
gologub 15.05.2021 15:50 # 0
на самом деле дерьмовая конвенция для узкого круга зада ч
Soul_re@ver 12.05.2021 22:12 # +1
j123123 12.05.2021 22:16 # 0
А если перед инклудом такой библиотеки отключить /Wall какой-то прагмой, а после инклуда обратно включить, это сработает? Ну типа, чтоб для питушни, нагенереннгой такой-то компилтайм-либой, никакие варнинги не работали
Soul_re@ver 12.05.2021 22:17 # 0
PolinaAksenova 12.05.2021 22:18 # 0
https://docs.microsoft.com/en-us/cpp/preprocessor/warning?view=msvc-160
Но это — жёсткое прибивание кода к VS. Можня, конечно, расставить везде #ifdef _MSC_VER, но это какая-то хер-ня получается.
bormand 13.05.2021 08:18 # 0
j123123 13.05.2021 08:57 # 0
Ну это можно скостылить же
Делаем файл incl_without_warn.h со следующим содержимым
И можно делать:
И тогда все норм будет.
bormand 13.05.2021 09:00 # 0
Да проще тогда в stdafx.h всё "системное" хуйнуть, чем так пердолиться над каждым инклудом...
j123123 13.05.2021 09:06 # +1
Это все потому, что сишный макрос не может раскрыться в другой макрос и/или в инклуд. Надо препроцессор патчить.
PolinaAksenova 12.05.2021 21:58 # 0
https://i.imgur.com/hO8x9NQ.png
И это только после компиляции! Нямножко подождала, IntelliSense ещё добавил: https://i.imgur.com/hlTryEG.png .
MAKAKA 12.05.2021 21:34 # +3
У меня на такое решарпер ругается, и просит их местами поменять
3_dar 12.05.2021 22:02 # 0
MAKAKA 12.05.2021 22:04 # +2
3_dar 12.05.2021 22:11 # 0
bormand 13.05.2021 08:16 # +1
DypHuu_niBEHb 13.05.2021 22:11 # 0
bormand 13.05.2021 22:12 # 0
DypHuu_niBEHb 13.05.2021 22:18 # 0
bormand 13.05.2021 22:20 # 0
DypHuu_niBEHb 13.05.2021 22:20 # 0
bormand 13.05.2021 22:23 # +1
Soul_re@ver 13.05.2021 22:42 # +1
И на глаз тоже почти не отличается.
bormand 13.05.2021 22:45 # 0
Soul_re@ver 13.05.2021 22:46 # +1
http://govnokod.ru/23604
bormand 13.05.2021 22:56 # 0
bormand 13.05.2021 22:59 # 0
guest6 13.05.2021 23:01 # 0
bormand 13.05.2021 23:01 # 0
guest6 13.05.2021 23:04 # 0
bormand 13.05.2021 23:07 # 0
Проверкой в CI.
guest6 13.05.2021 23:09 # 0
bormand 13.05.2021 23:10 # +2
Не, кастомное правило на любой не-ascii в исходнике помимо комментов. Ибо нехуй.
gologub 14.05.2021 09:47 # +1
MAKAKA 13.05.2021 23:57 # 0
bormand 13.05.2021 23:58 # 0
guest6 14.05.2021 00:02 # 0
bormand 14.05.2021 00:04 # 0
MAKAKA 14.05.2021 00:06 # 0
А из других структур нельзя.
Например если прочитать говно из bool, то можно разрушить случайно true == true
guest6 14.05.2021 00:09 # 0
?
MAKAKA 14.05.2021 00:10 # +1
А после этого уже что угодно может быть
bormand 14.05.2021 00:13 # 0
Soul_re@ver 14.05.2021 00:15 # +1
bormand 14.05.2021 00:21 # 0
Поэтому выебать программиста он может только в рантайме.
Desktop 14.05.2021 00:32 # +1
bormand 14.05.2021 00:33 # 0
Ему передадут.
Desktop 14.05.2021 00:39 # 0
Soul_re@ver 14.05.2021 00:33 # +1
MAKAKA 14.05.2021 00:05 # 0
байт вроде можно читать неинициализированным, просто мусор будет
guest6 14.05.2021 00:08 # 0
Джавашок что ли?
MAKAKA 14.05.2021 00:09 # 0
в винде есть
typedef unsigned char BYTE;
А в крестах нету байта же((
Soul_re@ver 14.05.2021 00:13 # 0
https://en.cppreference.com/w/cpp/types/byte
MAKAKA 14.05.2021 00:14 # 0
>>17
ну понятно
а его тоже можно читать неинициализированно?
guest6 14.05.2021 00:17 # 0
typedef уже не в моде?
bormand 14.05.2021 00:19 # 0
digitalEugene 13.05.2021 09:56 # 0
MAKAKA 13.05.2021 19:09 # 0
bootcamp_dropout 13.05.2021 19:40 # 0
guest6 13.05.2021 20:29 # 0
bormand 13.05.2021 22:18 # 0
guest6 13.05.2021 19:15 # 0
MAKAKA 13.05.2021 23:57 # +1
guest6 14.05.2021 00:02 # +1
bormand 14.05.2021 00:08 # +1
Desktop 14.05.2021 00:55 # +1
CHayT 14.05.2021 10:29 # 0
TOPT 14.05.2021 10:39 # 0
KoWe4Ka_l7porpaMMep 14.05.2021 10:43 # 0
bootcamp_dropout 14.05.2021 10:49 # +1
3oJIoTou_xyu 14.05.2021 11:52 # 0
JloJle4Ka 14.05.2021 11:54 # 0
3oJIoTou_xyu 14.05.2021 11:57 # 0
JloJle4Ka 14.05.2021 11:59 # 0
3oJIoTou_xyu 14.05.2021 12:01 # 0
JloJle4Ka 14.05.2021 12:02 # 0
gologub 14.05.2021 12:23 # 0
https://upload.wikimedia.org/wikipedia/commons/5/51/Soundviewbxrow.JPG
gologub 14.05.2021 12:06 # +1
3oJIoTou_xyu 14.05.2021 12:11 # +1
gologub 14.05.2021 12:28 # +1
bormand 14.05.2021 00:20 # 0
Kozel 16.05.2021 10:43 # 0
MAKAKA 16.05.2021 15:12 # +1
JloJle4Ka 16.05.2021 15:15 # 0
Медленно доходит до середины сцены, снимает штаны, садится на стул и принимается ожесточенно (додумайте сами в общем)...
В зале стоит полная тишина. Вдруг раздается голос:
- Мужчина, да как вам не стыдно!
Мужик на сцене испуганно задувая свечку:
- Кто здесь?!
CkpunmoBbIu_nemyx 14.05.2021 00:35 # 0
Desktop 14.05.2021 00:50 # 0
MAKAKA 14.05.2021 01:02 # 0
Потому что наследовать можно несколько интерфейсов, а несколько абстрактных классов нельзя.
Так в джаве, и я на 87% уверен, что так же и в C#
Desktop 14.05.2021 01:07 # 0
Что мешает просто разрешить в интерфейсах статические методы и конструкторы?
В чём ещё профит в абстрактном классе, кроме как в обходе этих странных ограничений?
MAKAKA 14.05.2021 01:17 # +1
ничего не мешает, они там есть
>и конструкторы
Придется решать вопрос виртуального/невиртуального наследования
сколько раз вызовется конструктор Animal?
>В чём ещё профит в абстрактном классе
В абстрактном классе можно хранить какие-то поля, а в интерфейсе нет.
Pure abstract класс без полей ничем не отличается от интерфейса, и наверное не нужен
Интерфейс в C# это, по сути, протокол
Desktop 14.05.2021 01:19 # 0
- Orly?
MAKAKA 14.05.2021 01:22 # 0
https://jeremybytes.blogspot.com/2019/12/c-8-interfaces-static-members.html
в джаве есть изначально
Desktop 14.05.2021 01:24 # 0
MAKAKA 14.05.2021 01:30 # 0
А зачем тебе статичесчкий метод в интерфейсе? Он же там просто как в неймспейсе лежит
Desktop 14.05.2021 01:31 # 0
MAKAKA 14.05.2021 02:00 # 0
var t = T(foo);
?
Увы, в C# и java нужно через фабрику (это не кресты)
KoWe4Ka_l7porpaMMep 15.05.2021 16:00 # 0
Не то, что в «С++» или, например, в «Nim». Смотри, какой няшный дженерик:
Desktop 15.05.2021 16:06 # +1
KoWe4Ka_l7porpaMMep 15.05.2021 16:12 # 0
Desktop 15.05.2021 16:01 # 0
MAKAKA 15.05.2021 16:28 # +1
Там совершенно нормально передать куда-то класс, и вызвать у него любой метод, включая конструктор
Desktop 16.05.2021 19:09 # +1
MAKAKA 16.05.2021 19:15 # +1
Другой вопрос, что переходить с шарпа на питон вряд-ли стоит)
Desktop 14.05.2021 01:20 # 0
- в Шарпе-то?
Ну и в Свифте ж как-то решили
MAKAKA 14.05.2021 01:24 # 0
Интерфейс это протокол, это просто обещание "я клянусь иметь такие-то методы"
В нем нету кода
Как только в нем появляется код или поля, то сразу начинается масса вопросов
А в свифте есть множественное наследование?
Desktop 14.05.2021 01:25 # 0
> в свифте есть множественное наследование?
- нет
MAKAKA 14.05.2021 01:28 # 0
Обычный метод диспатчится статически, и зависит от типа указателя.
Виртуальный диспатчится в рантайме, и зависит от реального объекта.
(а вот в джавке все методы виртуальные)_
Но я не про виртуальные методы, я про виртуальное наследование
https://en.wikipedia.org/wiki/Virtual_inheritance
Представим, что в у интерфейсов в шарпе есть конструкторы.
Ответь на вопрос: сколько раз для примера выше вызовется конструктор Animal?
Desktop 14.05.2021 01:30 # 0
MAKAKA 14.05.2021 01:31 # 0
Класс тут только Svinosobaka
И вот я его инстанциировал
Desktop 14.05.2021 01:32 # 0
MAKAKA 14.05.2021 01:38 # 0
А может кто-то захотеть, что бы он вызвался два раза, и создались два Animal (см ссылку про виртуальное и невиртуальное наследование в C++)
Это одна из проблем, которая возникла бы, если бы интерфейсы имели конструкторы.
В С++ вместо интерфейсов используются абстрактные классы, которые могут иметь поля, и там возникает еще куча вопросов, например если у Animal есть поле foo, то у Svinosobaka теперь есть два таких поля, и когда ты передаешь свинособаку во что-то, что ождиает Animal, то ты должен явно его скастить в Dog или Pig, иначе компилятор не поймет, какое поле использовать
Desktop 14.05.2021 01:39 # 0
MAKAKA 14.05.2021 01:41 # 0
Так или иначе, конструкторов в interface нет.
И даже требовать наличие конструктора они не могут (вроде бы в яблоке можно требовать в протоколе наличие метода init)
Desktop 14.05.2021 01:43 # 0
MAKAKA 14.05.2021 02:02 # 0
так же вроде
Desktop 14.05.2021 01:44 # 0
- я так до конца не понял, какие вопросы, ведь интерфейс это просто контракт и, как ты сам и заметил, никакого кода не содержит
MAKAKA 14.05.2021 02:01 # 0
А вот почему в интерфейсе нельзя определить конструткор без кода (то есть потребовать от реализующего его класса такой конструктор) я не знаю
bormand 14.05.2021 12:14 # 0
Потому что с травкой пора завязывать...
Какую практическую задачу ты пытаешься решить, наложив такое ограничение на конструкторы реализаций?
Desktop 14.05.2021 12:18 # 0
а что тут не так?
Soul_re@ver 15.05.2021 15:47 # +3
MAKAKA 15.05.2021 15:52 # +1
PHP поступает точно также
Desktop 15.05.2021 16:01 # +1
MAKAKA 15.05.2021 15:53 # 0
https://govnokod.ru/27424#comment627351
Soul_re@ver 15.05.2021 15:49 # +1
MAKAKA 15.05.2021 16:33 # +3
Веб-программирования, тут я тоже скажу, это не особо интересно, лично мне это совсем не интересно, хотя иногда приходится разбираться HTML.
А вот программирования игр это интересно, можно начать с программирования несложных игр с помощью всяких конструкторов. Ну или программирования модов, я например увлекаюсь С.Т.А.Л.К.Е.Р.ом, в результате освоил более или менее ассемблер, потом по хуже С++, ну и конечно Lua.
В общем, у каждого свой путь!
https://habr.com/ru/company/habr/blog/435562/#comment_19638102
Тот же крендель
По мне Си плох тем, что слишком высокоуровневый.
Не хватает ЯП занимающий промежуточное место между С/С++ и ассемблером.
https://habr.com/ru/company/vdsina/blog/532416/#comment_22428200
И еще немного
Хорошо когда IDE может подсвечивать одинаковые слова, при выделении одного из них, как это делается в Notepad++, не все IDE это могут делать, из-за этого приходится открывать один и тот же файл и VS2010 и Notepad++
https://habr.com/ru/company/pvs-studio/blog/488332/#comment_21279542
ну и лучшее
Можно на С++ писать так, как на ассемблере, т.е. по возможности без лишней абстракции, ну примитивные данные быстрей обрабатываются.
https://habr.com/en/post/484688/#comment_21191180
KoWe4Ka_l7porpaMMep 15.05.2021 16:38 # 0
Ему ещё и плюсы лепят! )))
booratihno 15.05.2021 16:44 # +2
Вообще он прекрасен. Например вот:
А во обще странно, почему тормозит. Я недавно тестировал компиляторы VS C++ 2010 и VS C++ 2017, да к новый компилятор генерирует более оптимальный код, 5-10% можно получить быстродействия, и это простой перекомпиляцией. Ну а если вдруг проект стал тормозить значит, значит к проекту прилипла что-то тормозящие, в смысле библиотека.
---
или вот
А то я в последнее время приобрёл привычку сжимать исходник, чтобы колёсико мышки меньше изнашивалось.
Раньше делал так:
а теперь делаю так
-----
Без матана конечно можно, но например программисту лучше всё же его знать. Программирование это прежде всего логика, математика уже вторична
----
KoWe4Ka_l7porpaMMep 15.05.2021 16:46 # 0
Кстати, в «Nim» исходники получаются меньше чем в Сисюке, т.к. там нет фигурных скобок, поэтому колёсико мыши меньше изнашивается. Ещё одна причина перейти на «Nim».
booratihno 15.05.2021 16:49 # 0
Потому я страдаю в питухоне
Кстати, в руби между бегинами и ендами скачет норм
KoWe4Ka_l7porpaMMep 15.05.2021 16:53 # 0
booratihno 15.05.2021 16:55 # 0
Положим, ты хочешь выделить тело функции.
Ты ставишь каретку на {, жмешь V%, и выделяешь всё до конца функции
KoWe4Ka_l7porpaMMep 15.05.2021 16:56 # 0
Кстати, для питона есть такое:
https://vi.stackexchange.com/questions/7262/end-of-python-block-motion
Тебе не подойдёт?
booratihno 15.05.2021 16:57 # 0
Тебе никогда не нужно было посмотреть где функция кончается, например?
KoWe4Ka_l7porpaMMep 15.05.2021 17:00 # 0
А ещё есть такая штучка в емаксе, она показывает какие в файле есть функции, классы и т.п., можно там тыкать и прыгать к дефиниции. Правда, я не знаю, как это включить в питоне и «Nim» (((
bootcamp_dropout 15.05.2021 17:12 # +1
ты же не только с кодом который сам написал работаешь
говна на тыщи строк встречаются в любом проекте старше 5 лет думаю
KoWe4Ka_l7porpaMMep 15.05.2021 17:25 # 0
Soul_re@ver 15.05.2021 17:28 # +1
bootcamp_dropout 15.05.2021 17:32 # +1
Это просто значит что функция не прошла естественный отбор
gologub 15.05.2021 18:07 # 0
I'm Going Back to Reddit
MAKAKA 15.05.2021 18:20 # +1
KoWe4Ka_l7porpaMMep 15.05.2021 16:42 # 0
Чем бы мне ни заниматься, лишь бы только с емаксом не ебаться?