[a / b / c / d / e / f / g / gif / h / hr / k / m / o / p / r / s / t / u / v / vg / vm / vmg / vr / vrpg / vst / w / wg] [i / ic] [r9k / s4s / vip / qa] [cm / hm / lgbt / y] [3 / aco / adv / an / bant / biz / cgl / ck / co / diy / fa / fit / gd / hc / his / int / jp / lit / mlp / mu / n / news / out / po / pol / pw / qst / sci / soc / sp / tg / toy / trv / tv / vp / vt / wsg / wsr / x / xs] [Settings] [Search] [Mobile] [Home]
Board
Settings Mobile Home
/g/ - Technology


Thread archived.
You cannot reply anymore.


[Advertise on 4chan]


File: me.png (1.58 MB, 1920x2443)
1.58 MB
1.58 MB PNG
Previous: >>100159394

Why aren't you calculating fibonacci(10000000), /g/?
>>
>>100179479
nyanpasu
>>
File: all_fucked.png (7 KB, 436x436)
7 KB
7 KB PNG
Because it's all fucked and I'm having a headache.
>>
>>100179479
fibonacci 0 = 0
fibonacci 1 = 1
fibonacci n = fibonacci (n - 1) + fibonacci (n - 2)

main = do
let result = fibonacci(10000000)
putStrLn "Done"
>>
>what's Binet's formula
why are pedos so retarded?
>>
Reminding anons to use https://github.com/friendlyanon/cmake-init when creating new C++ and C projects!
>>
>>100179691
Have you run it?
>>
>>100179716
noone with a brain would use this
>>
>>100179725
yes, it prints "Done"
problem?
>>
>>100179691
This nigga....
>>
>>100179750
Yeah, there's no proof of it having run at all.
>>
>>100179788
If the program didn't run, "Done" wouldn't be printed.
>>
>>100179828
You're lying, and "Done" was never printed.
>>
File: btfo.png (18 KB, 1126x223)
18 KB
18 KB PNG
>>100179867
https://play.haskell.org/
>>
>>100179928
Print the result. The calculation is being optimized out.
>>
>>100180028
no it isnt bigot
>>
>>100180156
Yes it is, retard.
>>
>>100179479
>Why aren't you calculating that random and useless thing?
>>
>>100180028
https://godbolt.org/z/Mdd1jK9rs
It's astonishing how much work you're making me put into this. When will you be satisfied?
>>
>2024
>llvm still emits calls to bcmp
what went wrong?
>>
>>100180346
use a real compiler and not a toy
>>
>>100180334
>fst
Nice try, nigger.
>>
>>100180407
It's short for "fast"
>>
>>100180421
http://zvon.org/other/haskell/Outputprelude/fst_f.html
You're a lying piece of garbage and should be hung up by your entrails on the highest building of your community for everyone for see.
>>
>>100180452
Amazing how it's even faster at getting both things for no reason
>>
>>100180475
>pretends not having read it
>"returns the first item in a tuple"
I would even feed and water you while you're hung up there, to ensure that your ordeal is as long and protracted as possible.
>>
how do I pad a number up to n digits with spaces the sepples way WITHOUT using string streams? (I fucking hate the <<>><<><>< syntax)
>>
Who hires for Haskell, Pascal and other ancient languages?
>>100179928
>>
>>100180493
So according to you it fetches the whole tuple then throws away half of it, so there's already a binding for the result you're complaining about. Astonishing.
>>
>the schizo gorefag is an Haskellfag
I knew FPtards were deranged
>>
>>100180520
Just remove the fst, see what happens.
>>
>>100180496
paddedNumber := fmt.Sprintf("%*d", n, number)
>>
>>100180535
fibonacci 0 = ("Base case 0", 0)
fibonacci 1 = ("Base case 1", 1)
fibonacci n = ("Recursive case", snd (fibonacci (n - 1)) + snd (fibonacci (n - 2)))

main = do
let (text, n :: Int) = fibonacci(10000000)

putStrLn text

n is right there anon!
>>
>>100180496
use libfmt or try to do the same with std::format since it's just a copy paste of libfmt into std
>>
>>100180548
>removes the fst and replaces it with something completely different
I accept your concession.
>>
>>100180602
end of the day I have a job and you don't
>>
>>100180695
>end of the day I have a job
As what, janitor?
>>
>>100180755
SWE 3 unlike you peon
>>
>>100180760
>more lies from a confirmed liar
Why am I not surprised?
>>
>>100180785
bro you are like a codemonkey earning 40k and no equity, why don't you shutup?
>>
>>100180795
Would that still be more than you're making? Lol.
>>
>>100179479
>>100179691
You guys know there's a closed-form equation, right?
>>
>>100180825
Is that an inverted Disney D?
>>
>>100180825
Using floats it loses accuracy and you need the perfect integers to help >>100178806 realize his dream of approximating Binet's formula.
He spent hundreds of dollars in computing resources, please understand.
>>
>>100180862
But why?
>>
>>100180862
Is that the bitnet anon who keeps posting his cryptic wikipedia articles in every /lmg/ thread? The fuck is he doing?
>>
>>100180874
We'll find out when he posts his earth-shattering "discovery" in months.
>>
>>100180892
Did you really think it was gonna be a big name who was gonna make agi? dumbass
>>
>>100180898
Again, what the fuck is he doing? "Approximating bitnet's formula" doesn't really tell me anything
>>
>>100180602
Why did you make me do this
data N = Z | S N
deriving (Eq, Ord)

instance Num N where
Z + x = x
S n + x = S (n + x)

x - Z = x
S x - S y = x - y

fromInteger 0 = Z
fromInteger n = S (fromInteger (n - 1))

fibonacci Z = Z
fibonacci (S Z) = S Z
fibonacci n = S (fibonacci (n - 2) + (fibonacci (n - 1) - 1))
fibonacci (S (S m)) = S (fibonacci m + (fibonacci (S m) - 1))

main = do
let !n = fibonacci(10000000)

print(n > 1000)

Not even using machine integers anymore and it still finishes.
>>
>>100180914
Think of the big bang, what could possibly make something come out of nothing? An exception.
>>
>>100180928
>le christcuck soýence theory
never happened
>>
>>100180928
right...
>>
>>100180960
Imagine being a programmer and not believing the most logical theory.

>>100180996
They said the same of Eistein, Galileu, etc.
>>
>>100181020
>most logical theory is a christcuck astroturf
>>
>>100181036
Then tell us what (You) believe in.
>>
Why is it not common for filesystems to keep logs of added files and their addresses?
you can write a recursive algo to optimize the logs and then rewrite a working filesystem using that output, file content is handled by the kernel anyway
>>
>>100181047
>believe
sorry my intellect is too high for this one
>>
>>100180914
The saga thus far:
1) anon blows up the stack by doing naive recursion fib, asks for help
2) anon blows up Python buffers by saving all intermediate fib results before streaming them to memory, asks for help
3) anon orders and downloads more RAM and hard drive space to get more GB to store up to the 2^10000000 fib number
4) anon claims there's a secret relation between the golden ratio and big fib numbers that should be apparent on very very very late sequence numbers
5) anon does "propiatary" stuff and refuses to share code while bitching he can't compute anything without using O(n!^n!) time and memory
6) (now) anon gets banned from cluster computing
>>
>>100181057
Windows doesn't do it because it is garbage. Linux doesn't do it because privacy.
>>
>>100181057
What do you think a journal is?
>>
File: Orphic-egg.png (101 KB, 440x602)
101 KB
101 KB PNG
>>100181036
The Greek (Orphic) and Egyptian creation myths make a much better case for the Big Bang than Christianity
>>
>>100181065
Just like real visionaries, the people of the current time don't understand, and the tech limits progress.
>>
>>100181076
if only i'd been born 40 years earlier

>captcha: hymn y
>>
>>100181086
Any SE worth their salt knows we are in a deterministic simulation.
>>
>>100181086
still not interested one bit in your christranny astroturf
>>
>>100181064
I heard r/atheism is looking for new moderators, you'd be a great fit!
>>100181065
If he has proof of this secret relation then he should just prove it with math and convince some university to give him access to a cluster for a few weeks/months
>>
>>100181099
if it's a simulation it cannot be any more deterministic than the world in which the simulation is running
>>
>>100181130
Obviously, just like how we simulate "random" lottery numbers.
>>
>>100181064
i feel sorry that you are a mindbroken faggot with no connection to divinity.
I have never rid myself of the innate connection to and yearning I have for God, no matter how hard the me of my teenage years may have tried.
But you will not repent, you will just laugh at me, somebody you perceive as inferior, that is inconsequential thougheverbeit.
>>
>>100181150
I feel like you should buy an ad
>>
>>100181150
I feel sorry you confuse mental illness with divinity.
>>
>>100181150
>thougheverbeit
Imagine frequenting forums in current year.
>>
>>100181164
>>100181167
>>100181171
I'm finding the solution, and no words you say will change that.
>>
>>100181220
You don't even know what the problem is.
>>
File: file.png (22 KB, 1001x701)
22 KB
22 KB PNG
>>100181232
>>
>>100181139
>we simulate "random" lottery numbers.
if a cosmic ray flips a bit in the memory of the computer our universe is running on, that's pretty random from our perspective.

If we can flip bits at will like with Row Hammer and thus cause behaviour that was not programmed into our simulation, we will have in some sense defied the plans of the Demiurge. If the ancients were right, this is what Dionysus can teach you to do.
>>
>>100181248
I'm not looking for any solution. I don't *need* to know.
>>
>>100181265
You are like a worm; you have nothing but your instincts.
>>
>>100181261
>If we can flip bits at will
Even if it were possible, we haven't found a way yet.
>>
File: 1687907161413875.jpg (89 KB, 968x1024)
89 KB
89 KB JPG
>>100179735
ye bruh I aint clickin that shit
>>
>>100181285
And you have mental illness and still neither problem nor solution.
>>
File: file.png (239 KB, 602x578)
239 KB
239 KB PNG
>>100181314
>>
>>100181343
So you're the left guy and I'm the right one?
>>100181150
>>100181261
>>100181285
>>
>>100181343
>semitic tranny who beats to succubus porn is acting as if he is a christfag to ruin their reputation
crazy.
>>
>>100181292
>we haven't found a way yet
do you know that for sure?
Look at ancient magic spells and descriptions of magic rituals like in the Greek Magical Papyri. They have a lot in common with computer programs. Maybe those were cheat codes for the universe that our ancestors discovered, or were given by entities from the outside.
>>
>>100181385
>no u
Cringe
>>
>>100181396
The evidence you provided is incontrovertible. You talk more than I.
>>
File: faggit.jpg (146 KB, 1080x455)
146 KB
146 KB JPG
>>100181385
>>
>>100181409
nice photoshop
>>
>>100181419
The best part is that even in the post he admitted to he's talking more than I.
>>
The universe has been going for so long that everything has already happened, the atomic bomb has already been achieved, we have hacked it.

>what remains?
being able to make mass into waves and viceversa for intragalactical travel.
>>
File: tard.png (178 KB, 1080x455)
178 KB
178 KB PNG
>>100181385
>hur dur everyone is one guy
>>
>>100181448
Can you go to Proxima? Like, right now? And don't bother sending a postcard.
>>
>>100181469
Stop asking me to do hard things that you can't even start thinking about how to do yourself.
>>
>>100181409
>>100181465
>implying that there's two people in the European timezone in the middle of the night in the same thread being schizo
Yeah, no.
>>
File: lhc.jpg (123 KB, 767x511)
123 KB
123 KB JPG
>>100181292
working on it
>>
>>100181502
Ah I see what malady you have now, burgerbrain disease
>>
File: IMG_20240426_010253.jpg (269 KB, 1080x1619)
269 KB
269 KB JPG
>>100181502
there is 3 actually
>>
>>100181515
>>
>>100181532
>Eastern USA isn't real
Your poor neurons
>>
File: all me.png (9 KB, 731x134)
9 KB
9 KB PNG
>>100181409
>>100181465
>>
>>100181541
No, that's the point. You want me to believe there's oh so many schizos living in the same timezone all talking the same nonsense in the same thread? You didn't even disable local time display, like a retard.
>>
>>100181550
you got the wrong imageboard mate
>>
>>100181571
They're also planning to build a "suite of micro services" without having an established codebase (i.e. Greenfield). You don't start with micro services, you sometimes end up with them.
>>
>daily programming thread
>>
>>100181550
accurate because technically you're all just in my imagination
>>
>>100181591
Anything you don't perceive isn't real.
>>
>>100179479
C, Rust, Haskell!
>>
>>100181742
Yes, son. C, Rust and Haskell.
>>
>>100181782
Boomer stack
>>
seems the hardest part of learning opengl so far is sifting through all the legacy kode to figure out what the fuck everything does, means, or if it's even fucking useful to know or if it's been replaced by something.
what a cluster fuck.
>>
>>100181798
why is your job making you learn opengl?
>>
File: girl puppy laughing.gif (1.99 MB, 400x240)
1.99 MB
1.99 MB GIF
>>100181065
>>
>>100182023
Fuck I'm hard now
>>
>>100181798
the hardest part of opengl is deciphering the jargon
>>
>>100179579
>>
yeah guess I'll just start with C
>>
writing C++
>>
writing assembler but unironically
>>
>>100182199
Be prepared to throw out everything you'll later learn about malloc, just keep it in mind for later: https://www.rfleury.com/p/untangling-lifetimes-the-arena-allocator
>>
You guys ever feel like you've got some developmental disorder? I feel like I barely scraped through college and I probably did, but when I look back on some of the concepts I struggled with they seem much simpler than I remember. Not sure if that's the second pass at work or if my brain is actually just developing at a snail's pace but sometimes I wonder if I was even thinking at the time
>>
>>100183056
you likely were not
>>
File: ages.png (21 KB, 740x171)
21 KB
21 KB PNG
>>100183056
You don't stop maturing once you've hit 18, and you may not even stop maturing after you're hit 25.
>>
>>100183123
I hate this type of picture with a passion. Felt like sharing.
>>
>>100183093
Yea... Still got a degree tho so no skin off my back ig
>>100183123
Oh yeah the funny brain development till at least 25 thing. Ugh, I can't believe I'm gonna spend the rest of my life wondering how I used to be so stupid (while reminiscing on the past week)
>>
AI is impressive, use AI.
>>
>>100183298
we don't serve mentally ill people
>>
>>100183441
>we
shitpost, faggot, for hundreds of posts.
>>
>>100183510
you seem mad
>>
Just figured out how to write one of my first programs without any help. I'm so proud.
>>
Is everybody in the undertale thread?
>>
File: 1695057482026416.png (119 KB, 474x527)
119 KB
119 KB PNG
>>100184168
Fuck that garbage.
>>
>>100179479
>Why aren't you calculating fibonacci(10000000), /g/?
python has builtin bigint support so this should be easy
def fib():
prevprev = 0
prev = 1
cur = 1
while True:
yield cur
cur = prev + prevprev
prev, prevprev = cur, prev


if __name__ == "__main__":
import sys

k = int(sys.argv[1])
fibber = fib()
[print(f"{i+1}th fib: {next(fibber)}") for i in range(k)]


now let's try it:

ValueError: Exceeds the limit (4300 digits) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit

lmao, I didn't even know that existed.
>>
>>100184222
Just as with yandev there is literally nothing wrong with this code
>>
>>100184259
4300 is such an odd number for this...
>>
>>100184276
Sure, if your neocortex has died.
>>
>write parser for whatever filesystem that data is on
>new big partition
>make the header ofr the specific filesystem
>recreate the tree with no file_content 's
>now do maths recursively with a global state 'current_block', only mapping one file at a time from the input partition
>that's it, as a bonus you compressed the fs
what is so hard about this, seriously? This is embarassing.
>>
>>100184276
even if there was nothing wrong, deleting files from the users pc without forewarning is sus fr no cap.
>>
>>100184402
Honestly now that I think about it how did Toby do it? Doesn't Windows complain if you modify files that are in use?
>>
>>100184308
my first guess of 999,999 digits was still too low and it errored out after 10 minutes
(the 1,000,000th fib only takes 6 seconds though)
I also had to stop printing intermediate numbers because that takes 10-100x as much time as actually calculating them

with this I should be fine though
    phi = (1 + math.sqrt(5)) / 2
max_digits_approx = math.ceil(math.log10(phi) * k)
# add 4300 extra digits of slop in case of rounding errors
sys.set_int_max_str_digits(max_digits_approx + 4300)
>>
File: 1690400419643326.png (129 KB, 1301x578)
129 KB
129 KB PNG
>>100184446
well I got it in 9m43s but the scrollback history in my terminal is too short to hold the whole number (which should be around 1-3 million digits long) so I can't actually copy-paste it anywhere
lmao
def fib():
prevprev = 0
prev = 1
cur = 1
while True:
yield cur
cur = prev + prevprev
prev, prevprev = cur, prev


if __name__ == "__main__":
import sys
import math

k = int(sys.argv[1])

phi = (1 + math.sqrt(5)) / 2
max_digits_approx = math.ceil(math.log10(phi) * k)
# add 4300 extra digits of slop in case of rounding errors
sys.set_int_max_str_digits(max_digits_approx + 4300)

fibber = fib()

if len(sys.argv) > 2 and sys.argv[2] == "all":
[print(f"{i+1}th fib: {next(fibber)}") for i in range(k)]
else:
for _ in range(k - 1):
next(fibber)
print(f"{k}th fib: {next(fibber)}")
>>
>>100184371
Optimizations and tradeoffs.
>>
>>100180862
>just use irrational numbers bro
kys codelet
>>
>>100184640
>just use irrational numbers bro
you can compute fibbonaci numbers purely using integers without dealing with floats nor irrationals.

although it sounds like that doesn't work for anon as he was trying to calculate them with an irrational BASE, so he's just fucked.
>>
File: 1709957378107712.jpg (529 KB, 1240x1754)
529 KB
529 KB JPG
Im writing a c++ lib that defines print(T a) for every standard type just to learn c++20 and reinforce my standard lib knowledge. I cannot think of a good way to print iterators. I did pointers as 0xthe address and containers as each element on it's own line. I thought maybe the index of the iterator but there isn't really a way to get .begin() from just a random iterator of an unknown container type that I can find and even if you know the container type you cannot always say for sure if what you have is really the beginning.
Any ideas? This is really just something to keep me sharp, I like it because there is usually an intuitive doable answer but I may have met my match here.
>>
>>100184222
How else would you do this if file_exists and file_delete don't allow regular expressions? Is there a function in that language for getting all files in a directory?
>>
File: 1711147967755797.jpg (69 KB, 682x266)
69 KB
69 KB JPG
>>100184762
Yes I know I can just get the underlining pointer but it feels like that is useless because
>You can just get the underlining pointer and call print on that yourself
>unlike some regular or even smart pointers (that I handle the same way) you more or less never care about the actual address of an iterator
>>
>>100184801
argv[0].
>>
>>100184801
use a better language
>>
>>100184865
only a midwit would use this
>>
>>100184934
Only someone with a dead neocortex would say that
>>
>>100184762
obviously you print the type of iterator and whatever other data applies, if you cannot do this maybe you shouldn't be writing C++
>>
>>100184970
argv[0] is literally worthless noise because unixtoddlers would cry if it was equivalent to /proc/self/exe at all times.
>>
>>100184562
that guy has been at this for weeks trying to get 10 terabytes of ram to run "cp -r /input/* /output" from one drive to the other LMAO forget optimization.
>>
>>100184801
Should have just deleted all files in the folder. By default a windows program installs in it's own folder no one ever moves it if you do sucks to suck.
Also why this now? it's old news
>>
>>100184996
Who cares.
>>
>>100185029
people who actually program and know things before posting in daily programming thread
>>
>>100185037
Sounds like cope
>>
>>100185048
kill yourself underage nigger
>>
>>100185078
Sounds like more cope not gonna lie
>>
File: 1711838862211988.png (128 KB, 667x667)
128 KB
128 KB PNG
>>100184976
I already handle type_info so I dont want it to just be
print(typeid(iter));
print(" : ");
print(&(*iter));
print(" : ");
print(*iter);
>type_info is gobbledygook at best so I want to use it as little as possible
>it feels like there has to be a better way
As an example if I get a struct I don't know what to do with (because its user defined) I print out its contents as hex using align_of to determine how mutch is printed per line.
>>
>>100185125
That's not the type I meant but goodluck with this level of understanding (including the fact that generalized implementation is impossible).
>>
>x helps do y
>it helps to
>helps the
I want to crush skulls and eat beating hearts.
>>
>>100185300
me helps do your mom sir
>>
>>100179479
using webdev as an excuse to use Haskell.
I mainly program in C. Might as well learn functional programming.
>>
>>100185316
>cnile cannot handle webdev in C
shameful
>>
>>100185329
I want to use other languages for other domains like web dev. I use C for game dev and whatever needs frame by frame performance.

It's fun to just use another language. And most of the flavorful languages are basically for backend web dev.
>>
>tfw you go low level and you start getting that "somn ain rrigh" feeling because you dont know electricisism
grim.
>>
>>100179479
Because it is not relevant to my expertise.
>>
>>100185420
>web servers don't need to be performant
>>
>>100185475
I'll code my multiplayer servers in C for the game.
Plenty of backend languages seem to be doing things well on the web side. It's just having a bit of fun.
>>
>>100185125
you can roll your own typeid (including the name parts) pretty easily by parsing a template's name using __PRETTY_FUNCTION__/__FUNCSIG__ on windows (i think) or std::source_location::current().function_name() on both more up to date versions of GCC, clang, and MSVC
you should be able to find examples
>>
>>100185493
midwit, nginx already exists, its extensive plugin support lets you write efficient C code as a plugin, meaning it can do all the interesting things without needing to learn any actual httpX brainrot, while being incredibly efficient
>>
>>100185516
I'm not experienced with web.
I'll be diving into it to build my game's website and blog.
Thank you for the information though.
>>
>>100185540
nginx is written in c, of course you weren't a larper you'd already know this.
>>
File: full_dc_sphere.webm (3.94 MB, 1280x720)
3.94 MB
3.94 MB WEBM
>>100185546
I don't claim to have vast knowledge. I'm just building stuff in C, currently building a Vulkan based Game engine in C.

I didn't know nginx was written in C.
>>
File: shifts_and_blends.png (15 KB, 623x860)
15 KB
15 KB PNG
>shifts and blends are way more effective than shuffles
>in part due to the fact that there's no immediate byte shuffle
I need a drink.
>>
>>100185676
>autismo got into encryption
here comes the wave.
>>
>>100185680
Nah, this is hexdumping.
>>
>>100185680
get a hobby besides hate posting on 4chud you incel
>>
Why are standard libraries so worthless and specialized for one single midwit usecase?
Every time there's a real non-fizzbuzz problem, I have to reimplement everything because standard library just isn't composable enough.
>>
learned neovim
what next? anything to avoid actually coding
>>
>>100185748
Because they're supposed to run on every system without source code change - spoiler alert: they fail at that, too. malloc(1024 * 1024 * 1024 * 64ULL) might fail on Windows and succeed on Linux, *on the same hardware*.
>>
How important is it to you that a compiler gives you a long list of program errors rather than just the first one it finds?
Writing a compiler and supporting this makes the infrastructure more complicated
>>
>>100185791
ideally i can choose how verbose i want the errors
>>
>>100185778
>not enough problem
not relevant enough, I need realloc but alignment must be 32 so realloc(3) is worthless because if it cannot expand my current allocation it will most likely pick some block of memory aligned to 16 bytes
>just allocate 31 more bytes and adjust the pointer bro
no I will just stick to mmap syscall, reallocating anything below 1MiB over and over again the way common midwit string implementations do is also brain damage when 1MiB is a joke amount of memory, most importantly virtual memory, if it's not faulted, it doesn't even exist.
>>
>>100185778
why are you allocating like half a gig?
>>
>>100185801
that's 64GiB
>>
>>100185799
>when 1MiB is a joke amount of memory
The problem isn't the "joke amount of memory", but the context switches associated with syscalls. If you can avoid those *and* the additional cancer that malloc's managing of state is, then sure, go for it.

>>100185801
More like 64 GiB, and that wouldn't be a problem on Linux due to lazy commitment. On Windows though malloc has to commit every page it reserves automatically, and that increases the commit charge.
>>
>>100185847
I don't know how else I can simply have efficiency of realloc without writing my own but with adjustable alignment.
At this point I'm not even sure if syscalls really have that big overhead for common usecase of simply allocating a few strings and reusing them, if I needed a lot of small strings I'd use an arena, I simply cannot imagine an usecase where I'd have to allocate a shitton of strings and then get rid of them very often, though, any parsing for example doesn't require allocations at all most of the time, though parsing something like XML might require reencoding certain things, but at that point you can just use one single string. A string itself is already an arena of chars so what you can do is have a dumb write-once string which is just a pointer to real string with offset and length, in C++ this is 24 bytes just like a real string would be.
If you need to release memory based on scopes, you can use one string per scope with a lot of dumb strings referencing it and when it goes out of scope (in parser, not C++), you simply clear the one real string that acts as arena.
Basically I cannot come up with a real intelligent programmer usecase where std::string couldn't always be a syscall to mmap with already big allocation like 1MiB.
>>
I'm also really butthurt about the fact that cache line size of platform isn't the default allocation alignment.
>b-b-but compacting allocator will help stupid people!
Intelligent people will try to stick as much as possible into cache line sized data blobs already for any problem and only intelligent people should program.
>>
File: syscalls.png (137 KB, 1670x730)
137 KB
137 KB PNG
>>100185931
>At this point I'm not even sure if syscalls really have that big overhead for common usecase of simply allocating a few strings and reusing them
Don't even. Even the fastest syscall that does absolutely nothing is still twenty times more expensive than a userspace malloc.
>>
>>100185960
I don't care about your timings, I already told you that any parser can be implemented with
>one allocation for source
>one allocation for dynamic data that needs to be transformed on demand
the horror of 2 syscalls aligned to page the way god intended things to be allocated versus pathetic 16 byte alignment of malloc that's not even faster in general case especially if you have more than one thread running.
>>
>>100185966
>I don't care about your timings
You might as well have said
>I don't care about reality
>>
>>100184762
well an iterator IS generally just a pointer with some kind of next/++ method, there's no guarantee that it even has an index as is the case with tree iterators etc

there's not even a guarantee it goes in the positive direction, std::reverse_iterator exists. so even if you have an iterator and the container and can call.begin() that isn't necessarily enough
>>
>>100179479
public static long fibonacci(int n) {
double phi = (1 + Math.sqrt(5)) / 2; // Golden ratio
return Math.round(Math.pow(phi, n) / Math.sqrt(5));
}
>>
>>100185981
the reality is that if malloc was never called before, it will require a syscall and if I alloc more than 128k memory or whatever is the limit for malloc, it will incur yet another syscall, now you have overhead of 2 syscalls and malloc, dipshit
>>
>>100185767
learn lisp and reimplement your neovim extensions in emacs
(with evil-mode of course)
>>
>>100185791
>How important is it to you that a compiler gives you a long list of program errors rather than just the first one it finds?
very important for large projects that aren't just toy programs / schoolwork
>>
>>100185767
learn computer science, you'll in fact become worse at programming
>>
>>100185748
cpp STL is great though
>>
>>100185994
>the reality is that if malloc was never called before
Why don't you launch x64dbg, set a breakpoint at malloc, and see how far you get? Because that's just what I did, and malloc was called *10 times* before it hit main().
>>
>>100185791
>>100186006
just do what existing non-toy compilers do.
GCC allows you to specify limit of errors you want -fmax-errors=N, and many other options that affect how warnings and errors are generated.
>>100186012
lol, lmao even, only ones that require no allocations, for example std::span is great, it can be templated both on std::span<T> in which case size is dynamic and overhead is there, or std::span<T, N> in which case it's known at compile time and overhead is different kind and not necessarily there if you use your brain, but majority of C++ STL is garbage just like every other standard library.
>>100186023
Why don't you realize that if I allocate two 1 MiB size strings it will incur 2 syscalls no matter what?
>w-why you need this much memory
parsing webshit pages for things that I'd rather access from my shell
>>
>>100186039
Why do you even do two mmaps then? Just allocate 2 MiB in one call. Fuck it, if you need more, then allocate 512 MiB directly. Why not. It's just virtual address space until you actually need it (on Linux at least).
>>
>>100185421
>now studying hardons and their different flavors
>>
>>100186039
>just do what existing non-toy compilers do.
I don't know what they do
The point is implementing multiple errors is more complicated so I'm asking if this feature is actually important to people
>>
>>100186081
Because I cannot predict a retard passing a 5GB file to be parsed
>just don't parse it
and what should I do then, tell user to recompile program instead of having slow path for bigger than N bytes files?
>>
>>100186039
>lol, lmao even, only ones that require no allocations
what giga memory constrained embedded shit are you programming for or is this just a "malloc is slow so ill use my own shitty nsquared array algorithm instead of std::map"
>>
>>100186093
>Because I cannot predict a retard passing a 5GB file to be parsed
... what does that have to do with anything? Again, it's just virtual address space until you need it and lazy commitment kicks on.
>>
>>100186095
>std::map
usecase literally unknown
>>
>>100186102
Tt has to do with the fact that if I have ranges AB in memory and A needs to expand, I now have to memmove B, use your brain.
>>
>>100184801
https://learn.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulefilenamea
>>
>>100186112
*You have 127 TiB of virtual address space*. What the fuck are you talking about?
>>
>>100181448
It was the government that made the bomb. Governments, all of them, work for the Demiurge. Even if somebody will discover a hole, it''ll get patched the second the government finds out.
>>100181514
Again, the government. These people unwittingly help keep us trapped, it's just as evil as bug bounty programs.
>>
>>100186106
>usecase unknown
have you really never programmed anything that would benefit from O(logn) or faster key lookup?
or are you saying you tediously implement your own hashmap every time
>>
>>100186128
I'm not a cnile, I will just drop in abseil container and be done with it, unlike C++ standard comittee, Google actually uses C++ in real world so I will trust them with their data structures.
>>100186117
>just split your memory and do this mindbroken thing
no thanks, I will just let Linux handle this. I will even use mremap to make it unportable. You seem to be missing the point, it's like you're the kind of retard who will eventually slippery slope yourself into telling me to just write my own OS so everything is as efficient as possible, while I'm only complaining about userspace cnile brainrot.
>>
>>100186150
>complete descend into incoherency
Is that what the lack of inner monologue does to an NPC?
>>
>>100186167
you forgot to post a hexdump
>>
File: XXXXXXXX.png (11 KB, 858x378)
11 KB
11 KB PNG
>>100186172
I hope it makes you happy.
>>
>>100186118
btw nukes arent real.
>>
>>100186182
>most of the binary is ....
just like your inner thoughts
>>
>>100186008
anything to waste time
>>100185996
good idea
>>
>>100186185
Your lack of creativity just gave me a stroke.
>>
>>100186198
fatass
>>
>>100186206
Schizo
>>
Now kiss.
>>
>>100186256
I'm no princess, I'm not in the toad-kissing business.
>>
>about to begin quantum metaphysics
I-i just wanted to program
>>
>>100186184
trvke
>>100186372
not real either, buy an ad
>>
>>100186399
RIP stupid faggots who will never have to study physics, wether you are happy being ignorant and just typing the code or you were too stupid to get to making questions in the first place does not matter, all that matters is that you are here seething at me because I am on a plane of intellect far higher than yours. I laugh.

Will you buy the ad?
>>
>>100186478
Sounds like cope ngl.
>>
>>100179716
Still using make sorry not sorry
>>
File: Ted.png (775 KB, 1239x1758)
775 KB
775 KB PNG
>>100186478
I will do physics once you quantum monkeys already did the work of figuring out that everything is deterministic and already invented all tools to measure particles deterministically, without having to model it all statistically.
In fact it's more intelligent to work on computers because eventually they will be powerful enough to brute force the solutions.
>>
>>100186566
based, make just works
>>
>>100186649
>computers smarter than the smartest human
never, not in a gajillion years. God's hardware is flawless and so is his kernel, so much so that he can afford ten working threads and still retain better processing power than the greatest processor build by man as of april 2024 but there is more, God's hardware leaks nowhere close to as much energy as man's hardware does and THAT TOO WAS INTENDED! It was so that you wouldn't die in the cold.
You will never be the Lord, stupid little monkey. Back in the hex-dumping bin you go.
>brute forcing answers
if all of humanity cane together we could have that an artificial intelligence highly specialized in every field of thought, able to recognize new theorems and running constantly in less than 6 months, that will never happen though.
>>
>>100186826
>god's hardware is flawless
I can drop my computer on a curb and it will continue processing, can't say the same about your head, faggot
>>
>>100186826
Terry getting run over by a train was a mercy, compared to the drivel you're putting out here.
>>
i have this weird problem. i have a classic double-linked list written like this
class List {
Node *head;
// constructor
~List() {
while (head) {
auto p = head->next;
delete head;
head = p;
}

// the rest
};

and then my code is like this.
std::vector<List> v(N);
// M > N
for (int i = 0; i < M; i++){
if (i > v.size())
v.resize(2*v.size());
else
v[hash(i)].add(i);
}

the problem is that the first N add() are ok. but after the resize all the rest of my pointers are invalidated and i don't understand why. i guess the problem is that after it copies the head attribute from the old allocated memory to the new one (the doubled one) it calls the destructor of the list i just copied.
how do i solve this while still using a std::vector?
>>
>>100179716
you dont need
just use a bash script
>>
>>100187231
where's your copy and move constructors?
>>
>>100187231
Rule of five applies. You're probably deleting accidentally shared list nodes after making a copy. Use std::unique_ptr and stuff like this won't surprise you.
>>
>>100187368
>unique_ptr
will get a stack overflow on delete if your list is too big iirc, you will still have to manage stuff manually, lists are probably the most worthless data structure
>hard to implement correctly and as efficiently as possible for a linked list
>is most inefficient data structure already by default no matter what you do
>>
>>100185748
it's impossible to write a very general and efficient library without real metaprogramming
capabilities in the language you're using
>>
>>100187399
C++'s metaprogramming capabilities are endless
>b-b-but it's not total like LIS-ACK!
LISP will never be as performant as C++, it's worthless.
>>
Is there any way WHATSOEVER - even if it's being frowned upon - to have a realloc in C++ that's both compatible with new/delete AND has a change to not trigger a relocation?
>>
>>100187439
Yes, but you need to uphold few invariants. There's literally nothing wrong with placement new'ing items in dumb unitialized array then memcpy'ing the array. and simply not destructing anything in the old array, as long as you are aware of things you should never do, which is actually not that simple and pretty much impossible to solve generically.
>>
File: memcpy.png (11 KB, 460x778)
11 KB
11 KB PNG
>>100187454
>There's literally nothing wrong
Let's not start with this, shall we? The question specifically said "not trigger a relocation", which includes copies.
>>
>>100187473
You can overload new and delete operators, it can use any implementation you want, including one that simply reuses thing you deleted, or even has special case where a pointer is reallocated despite you calling new, basically new can work as a realloc, I'm not going to spoonfeed you on how to implement it correctly though.
>>
>>100187484
So you'd have to refer to realloc internally then? And there's no way around that?
>>
>>100187497
it can be any implementation you want, also bigger problem would be you'd be breaking invariants of entire STL and you'd have to rewrite entire STL that actually supports your custom implementations while upholding invariants to extent that's possible to do without just adding comments telling user to not be retarded. For STL itself, no, it's simply impossible, all standard libraries suck.
>>
>>100187413
>endless
maybe in theory but that's it
>LISP will never be as performant as
who's talking about LISP?
>>
>>100187512
boost?
>>
>>100187529
This wouldn't work in boost either. All cepplesstard code assumes that the only way to realloc is to alloc new bigger array, move objects via move constructor, then delete old array, which is completely retarded.
There are SOME objects that must be moved this way, but they're rarity and it's honestly cringe that this is what limits C++ STL
>>
>>100187540
So not avoiding relocations is a feature in C++ - is that the gist of it?
>>
>>100187527
If you expect a serious response all I can tell you is you should stop replying about things you don't understand.
>>100187573
No, that's feature of retards who program in it, it doesn't have to be this way. Sadly the downside is now you completely throw out any STL class that might allocate because they cannot work that way.
>>
>>100187586
OK, but I mean, there clearly was some thought put into the idea to get rid of realloc in C++, right? There's new and delete (even if you're not supposed to use them), but realloc is missing, probably for a reason.
>>
>>100187607
realloc doesn't fit cleanly into the object creation/deletion life cycle of new/delete.
if you want realloc-like semantics the closest thing is to just use std::vector I guess.
>>
>>100187344
i dont have them
>>100187368
where should i use the unique_ptr? instead of raw nodes' pointers?

from how i understand it, it seems rather a waste that the copy contructor copies the whole list when resizing since the objects are on the heap and it should be enough to copy the head pointer (and obviously not free()-ing the list). to do this though i'd need to break modularity because i need to delete the list destructor and deallocate the object somewhere else so that vector's resize doesn't touch them. probably unique_ptr is the way to go.
for now i stopped using vector and i manage my dynamic array with new/delete but it's "bad practice".
>>
>>100187623
stop using c++ before you hurt somebody
it would take a long time to explain how many ways you are are going wrong
>>
>>100187635
i am just implementing algorithms for my algorithm class, i'm not rewriting the new STL or Boost. i know C++, i don't know C++'s way to do stuff. i should probably read scott meyer's book.
honestly java is much more elegant regarding this stuff and the garbage collector helps a lot.
>>
>>100187622
Wasn't C++ supposed to be the successor of C? Honestly feels like a step back - if the price for templares - or maybe just the STL - is to accept copies as Bjarne-given, then maybe it's not as good as the predecessor.
>>
>>100187635
please tell the class everything he is doing wrong mr. Pseud. Do not forget to pay care to pointing out which of the things he is messing up are actual programming and which are sepple memes, while you do that maybe reconsider his and your position, in the eyes of many I hear (it was revealed to me in a dream) that you seem like a retarded faggot riding his donkey with a wooden leg as if its the whitest and strongest of the King's carriage's horses, the other Anon is clearly new to a stupidly designed language and seeking help, get a grip.
>>
>>100187660
In that case, your struggles make sense.
If you have the choice of using Java, use Java instead. If you don't have the choice, you need to make sure that you are writing all five of copy ctor, move ctor, copy =, move = and destructor.
std::vector won't copy and throw away each list on resize so long as move ctor exists and is noexcept

>>100187722
I'm not blaming him I'm blaming C++.
>>
>>100187660
Nooooo dont use java the garbage collector is retarded and super slow just deallocate the memory mate omg
>>
>>100187681
There is a reason that C is still a very major language.
>>
>>100187622
only because you retards decided so
>>100187681
it is, that retard doesn't know a thing about C++
>>100187779
The reason being cniles like you being too retarded to use C++ correctly, after all C++ is contrarian choice to C so everything must be opposite, good thing that as a zoomer I don't have babyduck syndrome and have efficient realloc for my self built vector.
>>
>>100187836
>have efficient realloc
Mind posting code?
>>
>>100187740
>std::vector won't copy and throw away each list on resize so long as move ctor exists and is noexcept
ok thanks but how was i supposed to know this if i hadn't read it before?
i think this is just a sign the i should improve my software engineering skills since i come from C and this stuff is practically non-existent (maybe also java since move semantics is stricly a C++ thing)
>>
>>100187586
>If you expect a serious response all I can tell you is you should stop replying about
I'm trying do start a conversation about metaprogramming and writing generic program No one is forcing you to reply if you don't want to or don't have anything to say about it. Stop replying to every post it's not your thread.
>things you don't understand.
metaprogramming is not imited to C++ or Lisp, cope
>>
>>100187851
it's equivalent to C realloc, after all the problem isn't with realloc but the way C++ is used that prevents realloc from ever being the correct choice. There's no hidden code that you cannot already find anywhere. I wrote 0 unique lines of code to have this, I simply fixed what already was there.
>>
>>100187862
LISP is king of metaprogramming and I can concede that fact easily because noone cares if you're best at one thing but aren't used in real world due to millions, maybe even gorillions of issues that make people not use your language.
>>
>>100187864
>it's equivalent to C realloc
That's not very efficient.
>>
>>100187888
Not my problem, use mremap on linux to avoid copying where possible, cope with copying memory pages on non-linux, there's no magic.
>>
>>100183056
Yes and I got medicated and it changed my life. You might be a lazy shithead but you might actually have a learning disability which most tryhard ex-r*ddit tourists here pretend don't exist
>>
>>100187895
>use mremap on linux
>trade syscall for copy
... there has to be something better.
>>
>>100187903
>trade syscall for copy
first of all there's no better way to grow memory than remap anywhere, secondly the idea is to use memcpy instead of std::move, memcpy is always faster, and does not require invoking destructors, downside is you use placement new and manually run destructors when it matters. This IS as efficient as you can get.
>>
>>100187914
>first of all there's no better way to grow memory than remap anywhere
What about just allocating a bunch of virtual memory, like >>100186117?
>>
>>100187903
write asm and use the data, extra, fs and gs sections like god intended.
>i need it to grow indefinitely
well, then you take the syscall or shut the fuck up.
>>
>>100187928
It's good when it works. You're solving your problem, you know what works and what doesn't, that's my entire point. C++ STL doesn't know any of this, because standard comittee boomers don't even program in C++.
>>
>>100187938
>write asm
All I want is memory to not suck, not write assembly.
>>
>>100187946
>C++ STL doesn't know any of this, because standard comittee boomers don't even program in C++.
... who put them in charge of the language, and why is anyone(!) listening to them? Ignoring them would be more appropriate.
>>
>>100187977
midwits who think that generic solutions work, anyway, on Linux, default overcommit isn't infinite and your process will be raped if you allocate too much virtual memory so you can't just take 127TiB unless you configure system to allow it.
>>
>>100188000
That sounds like such a step back. On Windows I can reserve whatever I want and it doesn't matter until I commit.
>>
>>100187952
mmap.
>>
>>100188044
how do think reserving a page works you dumb dumb negro? you have already commited.
>>
>>100188044
https://www.kernel.org/doc/Documentation/vm/overcommit-accounting
It's your system, but if your code is meant to be used by someone else they will have to opt-in into agressive overcommiting.
>>
>>100188055
>how do think reserving a page works you dumb dumb negro? you have already commited.
https://learn.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc
>MEM_RESERVE
>Reserves a range of the process's virtual address space without allocating any actual physical storage in memory or in the paging file on disk.
>You can commit reserved pages in subsequent calls to the VirtualAlloc function. To reserve and commit pages in one step, call VirtualAlloc with MEM_COMMIT | MEM_RESERVE.
>>
>>100187740
>std::vector won't copy and throw away each list on resize so long as move ctor exists and is noexcept
you were right! i'm impressed that i got it to work now by just adding noexcept.
one final question, after the move constructor is called i think (?) the object that i just moved is destroyed using the usual destructor right? because i had to tweak my destructor to make it work.
where can i learn more about this stuff?
>>
>>100188078
Can you write to a reserved page to commit it or does it require an additional call to VirtualAlloc?
>>
>>100188103
yes it runs destructors (needlessly), if you have knowledge of your data you can write a vector that's more efficient than std::vector that simply does not run destructors when it doesn't need to, such as from objects that would be moved, and at that point moving is useless, you can memcpy and forget the old data ever existed, with this fact, you can get rid of new and delete and use realloc directly which sometimes will not require even a memcpy
>>
>>100188110
No, but:
1. that wasn't the point. The point was that on Windows no such reserve limit exists.
2. Doesn't Linux switch to the kernel too when it has to commit memory after a page fault?
>>
>>100188138
read the doc >>100188056
>>
>>100188078
WHAT THE FUCK IS THE POINT OF THAT? Gosh this is so retarded I am actually amazed, its almost as if the entire (((virtual address space))) was yours to begin with.
>>
>>100188148
That doesn't answer my question.
>>
>>100188177
>>100188181
>entire virtual space is mine
it actually belongs to the owner of the machine, faggot, if you're a fizzbuzzer then sure, but some of us write software that will be used by more than one person
>>
>>100187875
my point was about metaprogramming in general, that it's impossible to write a generic library of program if you can't easily generate one of many possible variation of a given function with different types or different pieces of codes, if can't have a complex logic for deciding which piece of code use in a function or if you can't generate different pieces of code from a small declarative specification and a set of compile time parameters

Lisp can do all that but it's too impractical (parens, AST made out of binary trees instead of vectors or records, etc ..) to use and too hard to read and in the end there is no point in carefully generating code if the target language is not low level enough (yes sbcl but depending on an implementation sucks).

All this is not purely theoretical though, you can see that a lot of the new languages try to have macros and other compile time goodies and that bolted on a normal imperative and low level language.
>>
>>100188177
>ts almost as if the entire (((virtual address space))) was yours to begin with.
No. CreateThread does its own stack allocation, you can't provide an address. And that's just one instance where the kernel has no issues allocating space and memory without asking you.
>>
>>100188198
yes it is possible, template everything, make everything replaceable, if it isn't like a car from 50's it's useless.
>>
>>100188187
You still haven't answered my question. Does Linux switch into kernel mode and pay the syscall transition upon page fault handling?
>>
>>100188213
Have you considered that there's more than one poster?
Also cost of page faults is irrelevant, it must always be paid for every single memory page you ever touch.
>>
>>100188262
Not if you tell the kernel that you intend to touch many pages with one transition:
https://man7.org/linux/man-pages/man2/madvise.2.html
If I can touch 10 pages with one two mode switches, then that's a win.
>>
>>100188285
The cost is the same, page faults are like debt of memory management, your only choice is when you will pay it.
There are some problems that might be caused by numa autobalancing but quite literally nobody ITT will have to deal with this and if they did, they already knew how.
>>
>>100188295
>The cost is the same
Source? And no, I don't care about revelations in your dream.
>>
>>100188315
You're the one who had revelation in his dream and knows in advance exact amount of memory that he will need.
>>
>>100188322
No, I just know an upper limit I'm willing to support. Which, given the lack of allocator state, leaves me with more memory than malloc ever could.
>>
>>100188329
preallocating upper limit might take longer than the program takes to finish running by simply faulting on demand
>>
>>100188338
I'll probably already know how much memory I'll need in the immediate future. There's no reason to pay for potential mode switches over and over again.
>>
>>100188367
ok you're receiving a binary representation of your data structure across a network from untrusted source, tell me how much memory you will need to parse it and convert it into real data structure on your end
>>
>>100188382
Simple:
>if it's bigger than reasonable expectations I close the connection
>if it's not bigger, then I'll let the kernel deal with the faults in recv
>>
>>100188407
>kernel will deal with faults in recv
so you won't prefault, I accept your concession
>>
>>100188415
>so you won't prefault
You gave an example with an unknown varible, and I have the kernel deal with it while it's in kernel mode. Not my problem you suck at examples.
>>
>>100188440
well you're /g/tarded so I gave you an example that will make you realize it on your own, you asked for a source and the source is (You), it's infallible.
>>
>>100188462
You are completely insane.
>>
>>100188479
If you weren't aware of the fact that cost is equivalent, you'd have coped with some "realistic" prefault because it's "faster" but because it isn't you chose to concede and I accept your concession.
>>
>>100188501
There is no concession. You have lost touch with reality.
>>
>>100188509
Just like people who think they can prefault correctly.
>>
>>100188513
They can. Your example sucked, and you don't like being proven a retard.
>>
File: qm4grsosgtj71.png (369 KB, 398x463)
369 KB
369 KB PNG
>Ess-cue-ell
>See-kwl
>>
>>100188550
my example happens more often than any other cope, your toys like games which are for manchildren and not men aren't a good example.
Even then, you don't know if your user's machine can render 4k objects or it can actually render 32k objects, midwit.
>>
>>100188599
>my example happens more often than any other cope
It doesn't, and there's nothing you can do about it other than coping and seething.
>>
>>100188652
it happens more often in google datacenters per minute than your tranny cope happens on >>>/v/ toy computers per year across a globe.
>>
>>100188701
>source: my mountain-dew drenched asshole
No one cares about your opinion, zoomer.
>>
>>100188719
not my problem mindbroken tranny, your nugame edge cases literally aren't relevant, even ondemand page faulting will balance itself out in less than a second in any game loop
>>
>>100188730
>not my problem
That I believe, but only because you need a caretaker.
>>
>>100188756
Stop responding to it newfag
>>
File: eua0yuq085p51.png (20 KB, 273x116)
20 KB
20 KB PNG
>>100188830
>>
At this point every single cnile/rustroon bait thread has better discussions than /dpt/, all thanks to one sped.
>>
File: tiresome.png (473 KB, 680x486)
473 KB
473 KB PNG
>>100188955
agreed
>>
new
>>100189059
>>100189059
>>100189059
>>
File: sicp snake.png (27 KB, 666x768)
27 KB
27 KB PNG
>>
>>100179479
What book should I read to learn about efficient memory management using Rust?
>>
>>100179579
>>100182128
nyanpasu
>>
2 years ago somebody here recommended people to learn C and listed some books. I picked up C Modern Approach from their recommendations and was going through it, doing exercises during my free time and finally finished it. I enjoyed it.
What should I learn next? Some harder C book or another language? I need something with exercises or otherwise I get overconfident about my knowledge



[Advertise on 4chan]

Delete Post: [File Only] Style:
[Disable Mobile View / Use Desktop Site]

[Enable Mobile View / Use Mobile Site]

All trademarks and copyrights on this page are owned by their respective parties. Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.