- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
#include <iostream>
using namespace std;
int main() {
const char *kakoiBagor = R""""(
"Какой
багор )))"
)"""";
cout << kakoiBagor << endl;
return 0;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
#include <iostream>
using namespace std;
int main() {
const char *kakoiBagor = R""""(
"Какой
багор )))"
)"""";
cout << kakoiBagor << endl;
return 0;
}
А вы знали, что в C++ есть ХЕРЕДОК?
https://ideone.com/5KdJJQ
JloJle4Ka 04.06.2021 13:39 # 0
bormand 04.06.2021 13:40 # 0
JloJle4Ka 04.06.2021 13:52 # 0
vistefan 04.06.2021 13:53 # 0
JloJle4Ka 04.06.2021 13:56 # 0
bormand 04.06.2021 13:59 # +1
vistefan 04.06.2021 14:07 # 0
JloJle4Ka 04.06.2021 14:09 # 0
Кстати, это компайл-тайм функция!
bormand 04.06.2021 14:11 # +2
JloJle4Ka 04.06.2021 14:15 # 0
MAKAKA 04.06.2021 17:23 # +3
извините
vistefan 04.06.2021 13:59 # 0
Кстати, пистону бы пошло добавить dedent
JloJle4Ka 04.06.2021 14:11 # 0
Почему избыточно? Нормально. При беглом взгляде видно, что это лямбда, не приходится парсить закорючки.
vistefan 04.06.2021 14:12 # 0
JloJle4Ka 04.06.2021 14:18 # 0
Ах кейворды мои кейворды как я их люблю
https://www.meme-arsenal.com/create/meme/306940
MAKAKA 04.06.2021 17:40 # −1
ки
>new
говно и ненужен. От него только вред, потому что он засирает код
>lambda
это соль, чтобы не хотелось её писать
JloJle4Ka 04.06.2021 17:47 # 0
Как ты обозначишь каким образом и где создать объект?
> Ки
Кейворд уже устоявшееся выражение. Типа как суши (правильно говорить – суси).
> lambda
Есть такая картинка с лесом и надписью: «не нашел снайпера за 5 секунд – проиграл», лямбда без кейворда точно так же прячется в скобочках и загогулинах, как снайпер в комуфляже в зарослях.
MAKAKA 04.06.2021 17:50 # 0
А в каком языке, кроме С++, у тебя есть выбор?
> устоявшееся выражение.
угу, как "колготки с лукрой'
>прячется в скобочках и загогулинах,
но почему она не прячется в руби или котлине или JS?
JloJle4Ka 04.06.2021 17:51 # 0
MAKAKA 04.06.2021 18:02 # +1
Ruby
JS
Perl
Kotlin
Groovy
Все скриптушки боль-мень консистненты, только питухон выделяетчя
vistefan 04.06.2021 18:10 # +1
MAKAKA 04.06.2021 18:12 # +1
во-вторых это был бы lame excuse)
JloJle4Ka 04.06.2021 18:19 # 0
Плохо, мне он вообще не очень нравится, просто я хочу быстро заработать много денег, создавая сайт на «джанге».
> {{ куча лямбд }}
Мне они все не нравятся тем, что если бы в функцию передавались несколько результатов выражений, пара лямбд и ещё какие-нибудь параметры-массивы, то вызов функции превратился бы в кашу из специальных символов:
funkcia([n % n == 2 for n in {} + {11 % 2}], (1, 2 + 3, "$s" % 8) ...)
Что-то типа такого. Лично мне неприятно разбирать штучки!
Вот в «Nim» всё по-ня-тно, там лямбда выглядит так:
do (x: int) -> bool: x == 5
Сразу видно где лямбда начинается, где у неё аргумент, где у неё возвращаемое значение и что она делает. Ещё лямбду можно объявить как процедуру, это ещё нагляднее!
В «Nim», кстати, есть «new», мне такое по нраву: можно создать объект в куче!
MAKAKA 04.06.2021 18:31 # +1
Изучи PHP! Там есть new!
> бы в функцию передавались несколько результатов выражений
>пара лямбд и ещё какие-нибудь параметры-массивы,
если у тебя функция c несколькими аргументами, пара из которых другие лямбды, то не нужно делать лямбду наверное
> можно создать объект в куче!
а на стеке?
JloJle4Ka 04.06.2021 18:41 # 0
И на стеке!
> Изучи PHP!
Нехочетсо.
> то не нужно делать лямбду наверное
Если обозначение лямбды понятно и выделяется, то почему бы и нет.
Например, можно передать в функцию компаратор и ещё одну лямбду, которая будет какой-нибудь массив записывать в файл.
guest6 04.06.2021 18:40 # 0
JS
vistefan 04.06.2021 18:41 # 0
MAKAKA 04.06.2021 18:43 # 0
JloJle4Ka 04.06.2021 18:45 # 0
MAKAKA 04.06.2021 18:47 # 0
JloJle4Ka 04.06.2021 18:49 # 0
MAKAKA 04.06.2021 21:10 # 0
Ну это не всегда хорошо.
Зачем мне хранить в куче три инта?
Кстати, а можно сделать такую оптимизхацию, чтобы sizeof(vector<int>) занимал бы столько, чтоб можно было прямо в нем хранить 1-2 инта, а что больше -- класть в кучу
Soul_re@ver 04.06.2021 21:31 # 0
MAKAKA 04.06.2021 21:33 # 0
или их тогда нельзя swap?
Soul_re@ver 04.06.2021 21:44 # 0
MAKAKA 04.06.2021 21:52 # +1
Тогда значит я в теории мог бы сделать такой аллокатор, который первые N хранил бы на стеке не сломав swap
или всё равно не мог бы?
Походу не могу еще потому что стандартные коллекции (емнип) просто вызывают ему методы чтобы создать и удалить объект, а на их размер он не влияет..
vistefan 04.06.2021 21:30 # 0
MAKAKA 04.06.2021 21:41 # 0
"new" при вызове функции неявно создает "this" и его же возвращает.
Для примитивных типов String (в JS это примитив), Integer и пр. вызов их без new это просто каст, а с new создание объекта-враппера.
По степени упоротости приблежается к перловому bless, который привязывает ссылку к пакету, реализуя таким образом объект)
bormand 04.06.2021 21:42 # +1
MAKAKA 04.06.2021 21:47 # +1
это объект, а в булевом контексте он true:)
JloJle4Ka 05.06.2021 02:49 # +1
MAKAKA 05.06.2021 03:15 # +1
Она стреляет ``[object Object]``ом и "undefined"ом
Разницей между "of" и "in" в лупе.
Ловким приведением типов
итп
guest6 04.06.2021 18:50 # +2
MAKAKA 04.06.2021 21:13 # 0
bootcamp_dropout 04.06.2021 21:15 # 0
MAKAKA 04.06.2021 21:17 # +1
vistefan 04.06.2021 18:06 # 0
Так в коде теряется всё вообще)
Её естественно лучше выделить отступами, каментами и так далее, если вдруг почему-то в твоём коде лямбда - это что-то необычное, что может понадобиться "искать".
vistefan 04.06.2021 18:08 # 0
Достаточно mySecondEblan = Pituh(2, "eblan"). Нахуй new в таких языках как js, Java, сисярп? Ни нахуй он не не нужон
eukaryote 04.06.2021 18:25 # 0
MAKAKA 04.06.2021 18:34 # 0
Но вообще нужно было просто делать синтаксис как в C++, и проблемы бы не было
Весьма очевидно, что ты вызвал.
А еще в C# "new" вызывает конструктор даже у распологаемых (по умолчанию) в стеке структурах, что особо пиздец
vistefan 04.06.2021 18:40 # +1
Petuh p(1,"A");
Я не понял, что ты проиллюстрировал этим кодом
MAKAKA 04.06.2021 18:44 # 0
JloJle4Ka 04.06.2021 18:45 # +1
bormand 04.06.2021 19:58 # +1
std::cout << p << std::endl;
MAKAKA 04.06.2021 21:09 # +2
vistefan 04.06.2021 21:31 # +1
vistefan 04.06.2021 21:31 # 0
eukaryote 04.06.2021 18:41 # +1
Проблемы нет, а new есть.
> А еще в C# "new" вызывает конструктор даже у распологаемых (по умолчанию) в стеке структурах, что особо пиздец
Почему пиздец? В C# new означает вызов конструктора, только и всего, это же не C++.
MAKAKA 04.06.2021 18:45 # +2
потому что джавушки пидарасы
Впрочем, в крестах тоже можно соснуть и написат
foo = Foo(123);
но это более редко
Забавно, что new есть еще в Ruby, но там оно метод класса.
И еще в objc, не к ноче будет помянут
bormand 04.06.2021 19:45 # +1
Ты действительно хочешь синтаксис "как в с++"? ;)
Там ведь помимо Petuh a(1, "A") можно и Petuh(1, "A") написать для создания временного объекта на стеке. И Petuh{1, "A"). И Petuh p = {1, "A"}. Возможно я ещё какие-то варианты забыла, лол.
Но, с другой стороны, там всё просто. Что ближе по скопу, то и вызовется. Т.е. метод своего класса победит конструктор другого класса.
Soul_re@ver 04.06.2021 20:35 # +2
И причём у этих вариантов может, сука, быть разное поведение!
bormand 04.06.2021 20:43 # +1
А самые неудачные из них вообще декларируют функцию, а не создают объект...
"Нужно было просто делать синтаксис как в C++, и проблемы бы не было".
MAKAKA 04.06.2021 21:16 # 0
неужели не было бы лучше вместо
писать
?
Тут правда есть такой жмых, что без скобочек бы оно просто создавало указатель (в случае референс тайпа)
bormand 04.06.2021 21:18 # 0
MAKAKA 04.06.2021 21:19 # 0
в C# же методы пишутся с большой буквы
eukaryote 05.06.2021 02:23 # +3
MAKAKA 05.06.2021 02:41 # +1
?
eukaryote 05.06.2021 02:49 # 0
bormand 05.06.2021 02:43 # +1
MAKAKA 05.06.2021 02:46 # 0
В C# кстати есть "dynamic" -- вообще отказ от стат типизации, как "any" в TS или "def" в груви
bormand 05.06.2021 02:47 # 0
MAKAKA 05.06.2021 02:48 # +1
Вроде нет, ты просто дергаешь метод, и течешь.
Он дергает его рефлексией, так что кастить ничего не нужно.
Опкод в IL ввели небось для скриптушни типа Ironpython
-------
пруупф
eukaryote 05.06.2021 02:58 # +1
guest6 05.06.2021 03:07 # 0
А как работает object для value types?
или никак?
eukaryote 05.06.2021 03:13 # 0
Value type становится reference type со всеми вытекающими.
MAKAKA 05.06.2021 03:18 # +2
То есть если нечто принимает "object" в качестве аргумента, то передача туда даже обычного числа "1" приведет к перемещению этого числа в кучу (ну или взятию из пула, наверное) и к передаче ссылки на него?
Ох.. Слава богу, в c# для этого генерики есть
eukaryote 05.06.2021 03:24 # +1
MAKAKA 05.06.2021 03:30 # 0
eukaryote 05.06.2021 02:50 # 0
bormand 05.06.2021 02:52 # +1
MAKAKA 05.06.2021 02:52 # 0
bormand 05.06.2021 02:54 # 0
MAKAKA 05.06.2021 02:57 # +1
Я не уверен, что в императивной помойке это было бы легко сделать не порадив часовую компиляцию и труднохуйпоймикакие ошибки..
Алсо, нужна же наверное структутрная типизация?
bormand 05.06.2021 03:04 # 0
Вот есть у тебя x.size(). Какого типа x? ICollection какой-нибудь, в котором этот size заявлен?
А если ты этот size() реюзаешь в разных целях и общего интерфейса нету?
guest6 05.06.2021 03:08 # 0
Тому я и сказал
>Алсо, нужна же наверное структутрная типизация?
Придется отказаться от понятия "класс", и просто скзаать "нечто с методом .size()"
А потом у тебя есть метод, который принимает нечто с мтеодом size() и методом petuh()
bormand 05.06.2021 03:10 # 0
Сделали "интерфейсы" и запретили реюзать имена, по сути.
MAKAKA 05.06.2021 03:45 # +1
Вот такое вполне работает
Утка-с
bormand 04.06.2021 21:02 # 0
Кстати, из-за этого в реальных проектах встречались реальные факапы с лочками, когда вместо взятия лочки получалось объявление функции которое нихрена не делает. "Нужно было просто делать синтаксис как в C++, и проблемы бы не было".
MAKAKA 04.06.2021 21:08 # 0
Petuh p{}
именно для этого
Я ж спецом там не пустой ктор вызвал
bormand 04.06.2021 21:09 # +1
Да, теперь надо уметь читать вдвое больше кобенаций...
MAKAKA 04.06.2021 21:11 # 0
Petuh p()
?
ты или не пиши скобочек, или пеередавай туда чото
или это могло как-то от шаблонов вылезти/
bormand 04.06.2021 21:14 # +2
Ну был у тебя конструктор с аргументом. Ты его порефакторил и аргумент убрал. Получи граблями по яйцам на ровном месте.
PolinaAksenova 05.06.2021 04:44 # 0
Разумеется, p скорее всего* будет инициализирован и без скобочек, но чем меньше нядо вспоминать няканутых правил инициализации — тем лучше.
*
MAKAKA 05.06.2021 04:50 # 0
Если у меня старый сишный объект (как это верно выразить в терминах современного стандарта?) то он конечно сам собой не инициализируется. Но я же могу инициализировать его потом.
Можно наверное наступить на такое
Сам собой не инициализируется
А такой инициализруется небось
PolinaAksenova 05.06.2021 04:57 # 0
Объект с тривиальным конструктором по умолчанию (https://en.cppreference.com/w/cpp/language/default_constructor).
> то он конечно сам собой не инициализируется
Если Petuh — это класс, то он в любом случае инициализируется дефолтным конструктором. Просто если этот конструктор тривиален, то члены Petuh будут тоже инициализированы тривиальными конструкторами, и так до тех пор, пока ня встретится не-классовый (или как оно там) член, вроде int, который уже будет ня инициализирован.
> Сам собой не инициализируется
> А такой инициализруется небось
Оба инициализируются одиняковым конструктором.
А вообще вот: https://habr.com/ru/post/438492/ (Инициализация в С++ действительно безумна. Лучше начинать с Си). После прочтения этой статьи становится предельня понятня, почему лучше всё инициализировать явня.
MAKAKA 05.06.2021 05:00 # 0
В общем правильно считать так:
Конструктор вызовется всегда и у всех членов, просто у членов "int" по умолчанию он НЕ устанавливает значение и потому не инициализирует
Хотя на самом деле конечно никакого кода для вызова конструктора в объектный файл добавлено не будет для такого кода:
PolinaAksenova 05.06.2021 05:03 # 0
Теперь у Foo конструктор по умолчанию инициализирует i в 0.
MAKAKA 05.06.2021 05:05 # 0
А вдруг я хочу
я не хочу делать лишние действия))
Спасибо за статью, но я дочитал до фразы "статическая продолжительность хранения", и переключился на английскую версию
PolinaAksenova 05.06.2021 05:14 # 0
Если у тебя Foo создаётся меньше миллиона раз в секунду — особой разницы ты ня увидишь. Нябольшая цена за избавление от головной боли.
> переключился на английскую версию
Да, она лучше.
vistefan 04.06.2021 18:37 # +1
Не надо там никакого new. Это вот как раз странно, что компилятор дает тебе в одном скопе иметь два какие-то питуха, и различает их по new. Такой код и читать сложнее.
eukaryote 04.06.2021 18:42 # +2
bormand 04.06.2021 19:35 # +1
В крестах я ведь могу написать Foo(x) как вызов конструктора и Foo(x) как функцию в текущем скопе. И ничего, как-то с этим живут.
Т.е. проблема есть даже если не писать new.
vistefan 04.06.2021 21:30 # 0
MAKAKA 04.06.2021 21:37 # 0
Потом народилось новое поколение жаберов и шарпеев и джаваскриптеров с пыхерами, которые кресты отродясь не видывали, и для них "new" вот уж точно не имело никакого смысла.
Кстати, в ObjC у типа переменной, представляющей объект, указывается звездочка. Ну типа это же настоящий указатель(на объект в куче), и записывается как указатель. Звездочка там также не нужна по идее, как new
bormand 04.06.2021 21:38 # 0
MAKAKA 04.06.2021 21:45 # 0
но мне не оч понятно, почему нельзя было сделать это без зведочки. Строка и так не является валидным сишным кодом
bormand 04.06.2021 21:45 # 0
MAKAKA 04.06.2021 21:49 # 0
Но не сырой. Иначе бы как работал референс каунтинг и вызов dealloc?:)
bormand 04.06.2021 21:51 # 0
А он работал? :)
Там же вроде вручную надо было дёргать retain и release на указателе. В общем-то на сишной структуре мне тоже никто не мешает это делать, если у неё внутри счётчик.
MAKAKA 04.06.2021 21:54 # 0
Но уже лет семь как завезли ARC, который впиндюривает их.. хотя... он впиндюривает их уже после компиляции, чуть ли не на уровне LLVMного байткода..
Так что ты прав: это может быть обычный указатель
Desktop 04.06.2021 22:03 # 0
он просто ручной был, но был же
define "работал" тогда
bormand 04.06.2021 22:05 # 0
Ну я про ARC, его же не было изначально. Так что похоже, что это реально просто обычный сишный указатель на особую структуру. Без какой-то там магии.
Desktop 04.06.2021 22:10 # 0
Desktop 04.06.2021 22:57 # 0
шахимат
DypHuu_niBEHb 04.06.2021 23:07 # 0
А , у вас кодстайл другой: "method", но "Class"
bormand 04.06.2021 23:08 # 0
Надо внимательней думать, что у тебя в локальном скопе. И не писать классы на тыщу строк.
DypHuu_niBEHb 04.06.2021 23:12 # 0
foo = Petuh(123)
а потом петуха сделали функцией, а не конструктором класса, и сохранили сырцовую совместимость
В питоне тоже такое есть в джанге..
но раз эукариаот сказал, то наверное для него это проблема.
Сишарперам неследовало бы писать методы с большой буквы, и проблемы бы не было почти никогда.
Но видимо хотели быть похожими на кодстайл функций в винде
bormand 04.06.2021 23:13 # 0
В питоне нету, кстати. Там ведь методы без self не позвать.
DypHuu_niBEHb 04.06.2021 23:14 # 0
spam = Eggs()
что мешает Eggs быть функцией?
------
В реальной жизни так писать нельзя, конечно, но если ты пишешь крутую либу с кучей хаков и оптимизацией, то можешь себе такое позволить
bormand 04.06.2021 23:18 # 0
PEP8, я думаю.
DypHuu_niBEHb 04.06.2021 23:20 # 0
Верно. Потому в большинстве случаев проблемы нет в языках кроме C#, но в коде библиотек могут использовать такой хак для каких-то оптимизаций
bormand 04.06.2021 23:21 # +1
Ну что значит хак? Это ведь банальное кеширование чего-то в локалку. Можно и другое имя дать, чтобы читателю шаблоны не рвало.
DypHuu_niBEHb 04.06.2021 23:24 # +1
Хотя его бы лучше сделать через декоратор.
К сожалению не вспомню сейчас где я это видел в джанге, но вот тебе пример из котлина
Думаешь, ``BroadcastChannel`` это класс?
Хотя под кодстайлу котлина разумеется функция не пишется с большой буквы
bormand 04.06.2021 23:28 # 0
Ну да. И опять же, тут просто фабричная функция, зачем её называть так же как и класс, который она создаёт? Ну напиши MakeBroadcastChannel или CreateBroadcastChannel.
DypHuu_niBEHb 04.06.2021 23:31 # 0
Ну потому что там был класс сначала, а потом его поменяли на фабричную функцию, чтобы вон сделать разные реализации.
Потому что ты не можешь вернуть разные реализации из конструктора же.
А хотелось НЕ заставлять клиентов менять код (хотя пересобрать его всё же придется -- скорее всего опкод там другой).
Я не защищаю этот подход, просто показываю, что он есть:)
bormand 04.06.2021 23:37 # 0
Тогда почему бы явно не сломать код клиентов, чтобы они не забыли пересобраться? Выглядит как какие-то грабли на ровном месте.
Или там для непересобранных клиентов осталась копия класса под старым именем, чтобы они работали дальше?
DypHuu_niBEHb 04.06.2021 23:41 # 0
Я не думаю, что старая версия осталась.. Это был бы ад.
по идее вызов функции это invokestatic, а класс это "new" и "invokespecial".
А ты в крестах когда пишешь
всегда понимаешь ``petuh_krestux`` это функция, или конструктор?
bormand 04.06.2021 23:42 # 0
В основном да. Даже если всё в одном стиле, то по имени видно же обычно... Если существительное -- значит конструктор, если глагол -- значит функция.
MAKAKA 05.06.2021 01:03 # 0
какой size() ))
bormand 05.06.2021 01:13 # 0
Угу, в крестах одно время ещё был дурацкий приём, когда геттер и сеттер для свойств делали с одним именем. Что-то в духе:
MAKAKA 05.06.2021 01:18 # 0
Почему не делать как в жобе: с префиксом "get" и "set"?
Или почему не сделать проперти как в C# и котлине?
Desktop 04.06.2021 23:13 # 0
bormand 04.06.2021 23:16 # +1
DypHuu_niBEHb 04.06.2021 23:18 # +1
bormand 04.06.2021 23:20 # 0
Desktop 04.06.2021 23:21 # 0
DypHuu_niBEHb 04.06.2021 23:26 # 0
eukaryote 05.06.2021 03:46 # 0
В сисярпе такое невозможно, там никаких глобальных функций нет. В качестве "глобальных функций" можно использовать статик класс со статик методами, но они вызываются как ClassName.MethodName, так что никакой проблемы нет.
MAKAKA 05.06.2021 03:48 # 0
хуйню написал, у вас же там не классы импорятстя, а неймспейсы, да?
eukaryote 05.06.2021 03:54 # 0
Да. Но для класса можно сделать алиас
и теперь вместо Petushok.MethodName можно использовать Cock.MethodName.
MAKAKA 05.06.2021 03:57 # 0
Вообще заметил, что C# больше похож на C++ в этой области: тоже неймспейсы с классами, тоже алиасы для классов.
Аналогов джавьих пакетов нет
eukaryote 05.06.2021 06:14 # 0
Нельзя.
> C# больше похож на C++ в этой области
Ну, Хейлсберг сам говорил, что C# — это не клон Java и ближе к C++ (хотя по факту конечно напизжено из жабы очень много). В unsafe можно вообще точно так же пойнтеры использовать как в C/C++.
MAKAKA 05.06.2021 04:18 # 0
eukaryote 05.06.2021 06:16 # 0
vistefan 04.06.2021 18:01 # +1
MAKAKA 04.06.2021 18:04 # 0
vistefan 04.06.2021 18:11 # +1
MAKAKA 05.06.2021 04:07 # +1
https://www.linux.org.ru/forum/talks/913456?cid=913826
gologub 05.06.2021 04:16 # +1
Hijikata 05.06.2021 00:15 # +1
Desktop 05.06.2021 00:29 # +2
хороший язык
люблю CLR и люблю функциональщину
но у меня на клавиатуре нету ψ, и потому мне он не подойдет
придется делать стартап на пхп
/19653#comment316725
мне кажется, это ранний МАКАКА
bormand 05.06.2021 01:00 # +1
MAKAKA 05.06.2021 04:19 # +1
Desktop 05.06.2021 12:58 # 0
vistefan 04.06.2021 17:27 # +1
MAKAKA 04.06.2021 17:24 # +1
vistefan 04.06.2021 17:26 # 0
Desktop 04.06.2021 22:05 # 0
MAKAKA 04.06.2021 22:29 # +1
Desktop 04.06.2021 22:40 # 0
язык на букву Э
bormand 04.06.2021 22:49 # +1
Desktop 04.06.2021 22:51 # +1
MAKAKA 04.06.2021 22:51 # 0
bormand 04.06.2021 22:54 # 0
Desktop 04.06.2021 22:57 # 0
MAKAKA 04.06.2021 22:59 # +1
real_equals_including_type
Desktop 04.06.2021 23:05 # +1
bormand 04.06.2021 22:59 # +2
> Compute(8 ====Э [ ]).
[8]
MAKAKA 04.06.2021 23:03 # 0
bormand 04.06.2021 23:06 # +1
DypHuu_niBEHb 04.06.2021 23:07 # +1
прыг скок
я веселый гонопсевдокок
Desktop 04.06.2021 23:11 # 0
DypHuu_niBEHb 04.06.2021 23:03 # 0
MAKAKA 05.06.2021 01:16 # 0
Из Euphoria formal syntax:
.
соответственно, можно так
MAKAKA 05.06.2021 01:26 # +1
vb.net есть, а эйфории нет
MAKAKA 05.06.2021 01:28 # +1
-------
к сожалению, это всё написано про C++98
guest6 05.06.2021 01:30 # +1
какой багор ))
bormand 05.06.2021 01:52 # +1
Забыли написать, что где-то в совершенно левом месте, которое не имеет отношения к точке, где реально таится бага.
MAKAKA 05.06.2021 01:56 # +3
bormand 05.06.2021 01:59 # +1
Наблюдать, не влияя на эксперимент, сложно.
booratihno 05.06.2021 13:24 # +2
А еще бывает генеральский эффект, или эффект админа: комп у бухгалтерши глючит. Админ приходит -- комп не глючит. Уходит -- снова глючит
Desktop 05.06.2021 12:59 # +1
"требуется программист на Euphoria для поддержки высоконагруженного сервиса aka социальная сеть для общения программистов"
JloJle4Ka 05.06.2021 13:03 # 0
Зато по «PHP» их полным полно!
booratihno 04.06.2021 14:57 # +1
Точно так же можно и с переменныи
JloJle4Ka 04.06.2021 14:58 # 0
booratihno 04.06.2021 15:00 # +2
Можно любое слово на месте его использовать
vistefan 04.06.2021 15:01 # +1
прямо как в php /green
JloJle4Ka 04.06.2021 16:24 # 0
MAKAKA 04.06.2021 16:40 # +4
Вот чертов Борн -- писатель шелла -- всё у пхп спиздил в 1969-м году
gologub 05.06.2021 02:37 # +1
eukaryote 04.06.2021 17:27 # +1
Сап, говнокод. Есть одна тян...
JloJle4Ka 04.06.2021 17:31 # +2
(‘ T `U)
eukaryote 04.06.2021 17:35 # +1
Можно с интерполяцией
booratihno 04.06.2021 15:00 # +1
Steve_Brown 04.06.2021 16:38 # +1
throw new
TooLongLineExceedingRecommendedMaximumLe ngthOfEightyCharactersForCompatibilityWi thOldPrintersEncounteredException
();
Steve_Brown 04.06.2021 16:39 # +1
gologub 04.06.2021 15:05 # +3
rotoeb 04.06.2021 16:14 # 0
JloJle4Ka 04.06.2021 16:23 # −1
MAKAKA 05.06.2021 01:58 # +2
Наслаждаемся:
Java убьет ваш стартап. PHP спасёт его.
https://medium.com/nuances-of-programming/java-unichtozit-vash-startap-7c07c5f1ca75
PHP-программистов больше и они дешевле чем Java-программисты.
У PHP отличная производительность и становится она только лучше. На деле, он с легко конкурирует с компилируемыми языками.
PHP не «скриптовый» язык (что бы это ни значило), это мощный, полнофункциональный, объектно-ориентированный язык.
PHP создан для веб. Никаких дополнительных серверов, процессоров, хаков, уловок не нужно. Он буквально един с вашим сервером.
JloJle4Ka 05.06.2021 02:21 # 0
MAKAKA 05.06.2021 02:38 # 0
bormand 05.06.2021 02:39 # +1
Какой апач )))
MAKAKA 05.06.2021 02:39 # +1
А может они о том, что сделали в ВК? Там вроде весь код линкуется в итоге в один бинарь с HTTP сервером
gologub 05.06.2021 04:14 # +1
MAKAKA 05.06.2021 04:18 # +1
Там наверняка апаче был. Вообще в 2000-м году ничего не могло быть кроме апаче ни на каком юниксе (были еще сервера от лотуса и сана, но в дикой природе они не встречались)
gologub 05.06.2021 04:43 # +1
JloJle4Ka 05.06.2021 04:22 # +3
guest6 05.06.2021 17:24 # 0
MediumGovno 01.08.2021 10:45 # 0
warzes 26.08.2021 04:42 # 0
Во-первых чужие хостинги часто говно для своего софта на пыхапы - потому что жадные хостеры экономят на всем и простой поиск в базе будет занимать минуты.
А свой хостер поднять не имея никаких знаний по безопасности - это дыра безопасности. Ведь как обычно предлагают в учебниках по настройке апатча? "Ну если у вас что-то не работает, отключите все антивирусы, брандауэры"... Обычно так и оставляют, ведь знания как сделать чтобы работало без отключения не появилось, а работать оно как обычно должно еще вчера.
p.s. Лучший язык для стартапа - JavaScript через Node.js
ABryCTOBCKuu_nemyx 26.08.2021 08:58 # 0
Приведите реальный пример такого учебника.
guest6 26.08.2021 12:01 # 0
Это зависит ))
Плюс JS в том, что можно писать и фронт и бек. Но если твой стартап это не веб прилоожение с SPA, то я не уверен в выборе языка
Ну и лучше сразу взять TS, как только чуть чуть выучишь JS
MAKAKA 05.06.2021 02:38 # +3
1. PHP
Серверный язык сценариев PHP широко используется как молодыми, так и опытными компаниями. Хотя есть много способов применить PHP, он часто используется для создания динамических веб-приложений. Дополнительные качества, которые делают его хорошим выбором для стартапов, - это его высокая производительность и открытый исходный код. Благодаря простоте использования он также может ускорить вывод продукта на рынок.
https://itanddigital.ru/itstartup
JloJle4Ka 05.06.2021 04:25 # 0
JloJle4Ka 05.06.2021 04:40 # 0
MAKAKA 05.06.2021 04:57 # +1
Он ебанутый чтоли?
ssh там из коробки.
Мак это микроядро Mach + верхний слой из FreeBSD = ядро XNU
Поверх юзерленд спиженный из FreeBSD = DarwinBSD
--дальше пошла проприетарщина--
Поверх CoreFoundation
Поверх Cocoa, AppKit, Quartz и что там еще == OS X
Так что внунтри мака нормальный ssh, как во FreeBSD
Пиздец, чувак нихуя ни в чем не понимает, а уже статью писать
bormand 05.06.2021 07:25 # +1
eukaryote 05.06.2021 07:37 # +1
Оказывается, его завезли ещё в 1809.
bormand 05.06.2021 07:40 # +1
eukaryote 05.06.2021 07:43 # +2
booratihno 05.06.2021 13:21 # 0
bormand 05.06.2021 13:22 # 0
booratihno 05.06.2021 13:33 # 0
nuTepcKuu_nemyx 05.06.2021 17:30 # −1
JloJle4Ka 05.06.2021 04:44 # +2
Конечно же эта заметка возможно совсем не для хабра + я попутал с хабами и не мог определиться, Спасибо todoman, что подсказал про Чулан.
Я относительно недавно начал находить свободное время и силы, так как перестал работать дома и теперь вижу, что смысла мне пробоваться как автору на Хабре нет. Да и было просто желание чем-то поделиться, видать не тем чем нужно ))))
Теперь я понимаю, что лучше тратить время на что-то другое.
Это все написано на самом деле с чувством благодарности! Спасибо вам!
JloJle4Ka 05.06.2021 04:44 # 0
bormand 05.06.2021 07:39 # +1
JloJle4Ka 05.06.2021 08:57 # +1
gologub 05.06.2021 09:09 # +1
PolinaAksenova 05.06.2021 04:45 # 0
j123123 05.06.2021 04:49 # 0
Хотя что там интересного? Очередная говностатья на говнохабре с тупыми комментариями в ней.
PolinaAksenova 05.06.2021 04:50 # +2
> Хотя что там интересного?
Как что? Ещё больше тупых комментариев, конячно <( ̄︶ ̄)> !
MAKAKA 05.06.2021 04:53 # +3
Скоро на хабре будут такие статьи:
Вчера я прибухнул с друзьями, башка с утра немного трещала, но я посрал, выпил рассолу огуречного, и стало ничего
Спасибо за внимание
JloJle4Ka 05.06.2021 06:14 # 0
В общем шло время, потихоньку начинал привыкать к тому, что null может не существовать, даже пытался сделать что-то на мой тот взгляд идиоматичное: дефолтные значения в виде объекта.... В общем все это меня вгоняло в тоску и я очень хотел опять писать на Java, так как привык жить с null. Прошло время я уже нормально начал жить с котлиновским not nullable, и стало ничего
Спасибо за внимание
Desktop 05.06.2021 14:12 # +2
вон взять Романа: на ГК Стандарт от его зубов отскакивал, а на Хабре он про тугосерь исполнял
bormand 05.06.2021 07:30 # +1
> я спокойно сидела на fedora
Вот до чего мак доводит.
bootcamp_dropout 05.06.2021 11:12 # 0
Desktop 05.06.2021 14:13 # +1
а номера нужны, чтобы статистику собрать
bootcamp_dropout 05.06.2021 14:55 # 0
gologub 05.06.2021 04:49 # 0
guest6 28.08.2023 13:43 # 0
MAKAKA 05.06.2021 05:16 # +3
Вот например автор открыл для себя нулл сейфети, и пытается сам себе объяснить зачем оно нужно
https://habr.com/ru/post/560634/
JloJle4Ka 05.06.2021 06:18 # 0
bormand 05.06.2021 07:32 # 0
JloJle4Ka 05.06.2021 08:51 # 0
bormand 05.06.2021 08:58 # 0
JloJle4Ka 05.06.2021 09:05 # 0
Программисты живут в постоянном страхе, ведь в переменной может оказаться печально известный нулл и программа упадёт (как в Коко).
> Ну и чтобы явно подсветить для читателя те редкие кейсы, где нулл нужно обработать потому что там что-то опциональное.
Это кривая реализация optional или абстракция протекла?
bormand 05.06.2021 09:07 # +1
Как-то так, да. По-хорошему всё должно быть нот-нулл. Кроме тех мест, где optional/nullable. Но это язык с нуля дизайнить надо, а не на основе джавы.
JloJle4Ka 05.06.2021 09:10 # 0
bormand 05.06.2021 09:18 # +1
А если ты её туда сам засунул -- ССЗБ.
booratihno 05.06.2021 13:35 # 0
В джавке этого нехватает, кончно
bormand 05.06.2021 16:03 # 0
Тут вопрос в том, надо ли усложнять язык новыми концепциями, если более-менее получается и без них.
Soul_re@ver 05.06.2021 10:56 # +2
Если повезёт.
Этот код скорее всего не упадёт.
Загадка: если предыдущий код гарантированно не упадёт, может ли упасть этот код:
PolinaAksenova 05.06.2021 11:00 # +1
https://gcc.godbolt.org/z/c1nnMKrKn
Soul_re@ver 05.06.2021 11:09 # +2
bormand 05.06.2021 11:05 # +1
Вот так и появляются уязвимости...
bormand 05.06.2021 11:06 # +1
Soul_re@ver 05.06.2021 11:10 # +2
bormand 05.06.2021 11:12 # +1
Ибо адрес функции не получен при помощи взятия адреса функции.
З.Ы. Срачи про няшную и позиксовый dlsym по-моему до сих пор продолжаются...
Soul_re@ver 05.06.2021 11:16 # +1
bormand 05.06.2021 11:26 # 0
И что характерно, ебанутые платформы где указатель на данные нельзя взять и кастануть в указатель на код -- это как раз по большей части эмбеддед.
На ARM'е, к примеру, в младшем бите указателя на код лежит индикатор arm/thumb.
gologub 05.06.2021 11:36 # 0
booratihno 05.06.2021 13:30 # +1
Писать нельзя в nullptr же
Soul_re@ver 05.06.2021 13:36 # +2
booratihno 05.06.2021 13:37 # 0
int i = 0;
а потом
int* q = reinterpreter_cast<int*>(i);
?
PolinaAksenova 05.06.2021 13:38 # +1
booratihno 05.06.2021 13:29 # +2
JVM это не то место, где нужно экономить на сравнении указателя с нулом. Если это вот прямо хотспот, то его джит джитнет.
Desktop 05.06.2021 14:15 # 0
nuTepcKuu_nemyx 05.06.2021 17:29 # −1
bootcamp_dropout 05.06.2021 19:29 # +2
А то что, semantic web не сделаем?
guest6 05.06.2021 19:35 # +1
bootcamp_dropout 05.06.2021 19:48 # 0
bormand 05.06.2021 20:14 # +1
guest6 05.06.2021 20:18 # 0
bootcamp_dropout 05.06.2021 20:24 # +2
но я не очень ему верю
bormand 05.06.2021 20:26 # 0
Остерегаешься подделки?
bootcamp_dropout 05.06.2021 20:28 # +3
guest6 05.06.2021 20:48 # 0
nuTepcKuu_nemyx 06.06.2021 21:49 # 0
gologub 05.06.2021 20:47 # 0