- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
Python: What if everything was a dict?
Java: What if everything was an object?
JavaScript: What if everything was a dict *and* an object?
C: What if everything was a pointer?
APL: What if everything was an array?
Tcl: What if everything was a string?
Prolog: What if everything was a term?
LISP: What if everything was a pair?
Scheme: What if everything was a function?
Haskell: What if everything was a monad?
Assembly: What if everything was a register?
Coq: What if everything was a type/proposition?
COBOL: WHAT IF EVERYTHING WAS UPPERCASE?
C#: What if everything was like Java, but different?
Ruby: What if everything was monkey patched?
Pascal: BEGIN What if everything was structured? END
C++: What if we added everything to the language?
C++11: What if we forgot to stop adding stuff?
Rust: What if garbage collection didn't exist?
Go: What if we tried designing C a second time?
Perl: What if shell, sed, and awk were one language?
Perl6: What if we took the joke too far?
PHP: What if we wanted to make SQL injection easier?
VB: What if we wanted to allow anyone to program?
VB.NET: What if we wanted to stop them again?
Forth: What if everything was a stack?
ColorForth: What if the stack was green?
PostScript: What if everything was printed at 600dpi?
XSLT: What if everything was an XML element?
Make: What if everything was a dependency?
m4: What if everything was incomprehensibly quoted?
Scala: What if Haskell ran on the JVM?
Clojure: What if LISP ran on the JVM?
Lua: What if game developers got tired of C++?
Mathematica: What if Stephen Wolfram invented everything?
Malbolge: What if there is no god?
inkanus-gray 01.11.2016 21:41 # +6
1024-- 01.11.2016 21:48 # +2
Уже сейчас для поклонников этого чудесного языке не действует ограничение в 2к символов.
Lokich 01.11.2016 22:25 # 0
roman-kashitsyn 01.11.2016 23:59 # +8
except byte, short, int, long, float, double, boolean?
barop 02.11.2016 00:43 # −63
Хорошо что в .NET этой проблемы нет)
someone 02.11.2016 06:49 # +3
Lokich 02.11.2016 16:29 # 0
roman-kashitsyn 02.11.2016 16:50 # +2
Lokich 02.11.2016 18:26 # 0
а в чем разница между примитивами в объектами в java? с c# byte, int, etc это структуры, и они в стеке не хранятся например, и иммутаббельныые, ну и другие хитрости есть.
roman-kashitsyn 02.11.2016 20:30 # +1
Примитивы передаются по значению, объекты — по ссылке. В общем, это примерно как структуры в C#, только их всего 8 и новые объявлять нельзя.
> они в стеке не хранятся например, и иммутаббельныые
Подозреваю, что всё же хранятся, и композитные структуры всё-же мутабельные по-умолчанию.
barop 02.11.2016 22:55 # −63
В C#, на самом деле, почти тоже самое, просто у valuetypes там есть методы (это сахар), и wrap/unwrap делается куда прозрачнее.
Так что лохыч в лужу газирнул немнтго
Lokich 03.11.2016 15:12 # +1
в принципе этого достаточно.
>Подозреваю, что всё же хранятся, и композитные структуры всё-же мутабельные по-умолчанию.
если я правильно вкурил доку, то не совсем так. структуры не хранятся в управляемой куче, они хранятся в стеке и если ты меняешь значение поля, то он создает новую структуру на месте старой.
например, если создать ListL<> моих структур, и через foreach их менять, то он выдаст тебе тебе ошибку компиляции. работает только последний пример.
но вообще, в принципе, структуру можно загнать в кучу.
если я напишу то тут он упакует мою структуру, и поместит ее в памяти как ссылочный тип, а если я приведу ее обратно к ее типу, то он распакует ее, и вернет копию.
короче, есть профит использования структур по части производительности и потребления памяти, но с этим надо уметь работать.
huesto 03.11.2016 15:31 # −13
roman-kashitsyn 03.11.2016 15:35 # 0
Это какие-то листопроблемы. С массивом всё работает.
Lokich 03.11.2016 17:05 # 0
с массивом в foreach тоже не работает. все дело в том, массив хранит значения структур, а когда они упаковываются в объект, то в стеке создается новый объект, при распаковке которого возвращается копия объекта, а не сам объект.
в принципе, если так разобраться, то это тупо обертка для массива.
roman-kashitsyn 03.11.2016 17:18 # 0
Ну это и ежу понятно, ты же пишешь foreach (A a in myarray). Цикл копирует значения объектов в a и ты меняешь переменную цикла.
Т.е. структуры всё-же мутабельные, надо просто постараться, чтобы не сделать лишних копий.
CrashTesterAnusov 03.11.2016 17:28 # −63
guest 04.11.2016 00:43 # −15
Lokich 07.11.2016 00:38 # 0
так в том-то и прикол, что когда это структуры, то он тебе возвращает копию, а когда классы, то ссылку на объект в куче.
kurwa 07.11.2016 00:42 # 0
roman-kashitsyn 07.11.2016 00:53 # 0
You don't say?
>> Примитивы передаются по значению, объекты — по ссылке. В общем, это примерно как структуры в C#
Gay 07.11.2016 02:40 # −15
Lokich 07.11.2016 13:59 # 0
barop 07.11.2016 22:42 # −63
huesto 02.11.2016 17:13 # −15
barop 02.11.2016 17:35 # −63
gost 02.11.2016 16:35 # +2
bakagaijin 02.11.2016 00:05 # 0
laMer007 02.11.2016 11:20 # +1
лолшто
roman-kashitsyn 02.11.2016 11:41 # 0
fixed
codemonkey 02.11.2016 11:27 # 0
Her 02.11.2016 16:47 # −14
Steve_Brown 02.11.2016 18:13 # +2
Fike 03.11.2016 10:30 # +2
guest 07.01.2017 04:02 # −16
guest 07.04.2017 04:26 # −15