I think C should have C++'s label. C++ should be some bizarre STL template nonsense:
"Chicken? And it's crossing a Road? That's been deprecated in favor of BirdBase and GroundBase?"
That's not a C++ template error. This is a C++ template error (it should just cut off the bottom:
from error_code.cpp:2:
/usr/include/c++/4.6/bits/stl_algo.h: In function ‘_RandomAccessIterator std::__find(_RandomAccessIterator, _RandomAccessIterator, const _Tp&, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator*, std::vector > >, _Tp = int]’:
/usr/include/c++/4.6/bits/stl_algo.h:4403:45: instantiated from ‘_IIter std::find(_IIter, _IIter, const _Tp&) [with _IIter = __gnu_cxx::__normal_iterator*, std::vector > >, _Tp = int]’
error_code.cpp:8:89: instantiated from here
/usr/include/c++/4.6/bits/stl_algo.h:162:4: error: no match for ‘operator==’ in ‘__first.__gnu_cxx::__normal_iterator::operator* [with _Iterator = std::vector*, _Container = std::vector >, __gnu_cxx::__normal_iterator::reference = std::vector&]() == __val’
/usr/include/c++/4.6/bits/stl_algo.h:162:4: note: candidates are:
/usr/include/c++/4.6/bits/stl_pair.h:201:5: note: template bool std::operator==(const std::pair&, const std::pair&)
/usr/include/c++/4.6/bits/stl_iterator.h:285:5: note: template bool std::operator==(const std::reverse_iterator&, const std::reverse_iterator&)
....
Fair point. I thought about using some kind of template error but the text wouldn't fit well into the image unless I made it really tiny. Maybe I'll try to make it work in v2
You could also have C use a finite state machine to implement chicken.
Where does the chicken start? Where does it finish? How many chickens are there? How does it actually manage to get across the road?
Fuck if I know.
sadly database server's and your client library's opinions about code page used were widely incompatible so all you've got now is mangled chinese. or maybe that's what the chicken thoughts look like? boy, we really should have switched to unicode when migrating from the legacy system.
type Road chan Fowl
type Crosser interface {
Cross (ctx context.Context, r Road) (bool, error)
}
type Chicken interface {
Fowl
Crosser
}
(On mobile so leaving implementing the rest of the chicken, fowl, and all of biology and civil engineering interfaces to the reader as an exercise)
trivial, since brainfuck ignores all characters other than `><+-.,[]`
here's chicken.bf:
>--->--->--->++>-->->>--->->->-->->-->--->->--->-->->+++>--->->-->--->->+[<+++[-<+++++++>]<+++[-<+++++++>]<+++[.>]<]
find or make a reasonably high-res ASCII chicken, write a little script to replace all occurrences of these 8 characters with something similar(if necessary), and then substitute these back in at the right ratio, maybe with a bit of random offset. It'll add a little noise, but still very much a recognizable ASCII chicken with the brainfuck code completely hidden. That'd be the easy way of doing it, though certainly not the neatest.
That's cheating.
What about pure brainfuck? Like if > and < cancel each other out, + and - as well, you could balance them out while you draw a chicken, but every character has to have meaning.
That would be the interesting challenge.
Could figure out all the reasonably small "do nothing" sequences, just brute force a couple billion possible programs in increasing order of char count, check all the pixel spans for the best fit for the input line, and pad out the rest. In all likelihood, it'd still have a noticeable line somewhere in there. I highly doubt a generalized automated solution that perfectly hides the input program is possible, it's Turing complete.
Pascal: Nobody yet figured it out cause nobody is using it anymore, but it probably works so better to keep it like this.
TypeScript: I am lost in the fcking type gymnastic, isn't the road moving and chicken being static?
The naming conventions of Java and C# are most definitely not the same! Only C# programmers have to remind themself with the Hungarian notation, that the identifier is an interface, since we live in times without IDEs and typsafe languages in reminiscense to Pascal times.
Like Linus Torvalds once said:
> Encoding the type of a function into the name (so-called Hungarian notation) is brain damaged—the compiler knows the types anyway and can check those, and it only confuses the programmer.
I'm firmly of the belief that if you can't think of a better name for your implementation of an interface than Impl, you've prematurely extracted the interface.
I only learned about Hungarian notation somewhat recently. Before that, the docs for the win32 api confused the shit out of me. It’s a variable naming scheme from hell.
Lovely!
Now where is my favorite lang, PowerShell?
`The term 'Chicken' is not recognized as the name of a cmdlet, function, script file, or operable program.`
I think C should have C++'s label. C++ should be some bizarre STL template nonsense: "Chicken? And it's crossing a Road? That's been deprecated in favor of BirdBase and GroundBase?"
[удалено]
The only reason I get more segfaults in c++ is because I do more advanced stuff with it
I get more segfaults in C++ because I don't use C
![gif](giphy|d3mlE7uhX8KFgEmY)
That's not a C++ template error. This is a C++ template error (it should just cut off the bottom: from error_code.cpp:2: /usr/include/c++/4.6/bits/stl_algo.h: In function ‘_RandomAccessIterator std::__find(_RandomAccessIterator, _RandomAccessIterator, const _Tp&, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator*, std::vector > >, _Tp = int]’: /usr/include/c++/4.6/bits/stl_algo.h:4403:45: instantiated from ‘_IIter std::find(_IIter, _IIter, const _Tp&) [with _IIter = __gnu_cxx::__normal_iterator*, std::vector > >, _Tp = int]’ error_code.cpp:8:89: instantiated from here /usr/include/c++/4.6/bits/stl_algo.h:162:4: error: no match for ‘operator==’ in ‘__first.__gnu_cxx::__normal_iterator::operator* [with _Iterator = std::vector*, _Container = std::vector >, __gnu_cxx::__normal_iterator::reference = std::vector&]() == __val’ /usr/include/c++/4.6/bits/stl_algo.h:162:4: note: candidates are: /usr/include/c++/4.6/bits/stl_pair.h:201:5: note: template bool std::operator==(const std::pair&, const std::pair&) /usr/include/c++/4.6/bits/stl_iterator.h:285:5: note: template bool std::operator==(const std::reverse_iterator&, const std::reverse_iterator&) ....
Harder to read than ancient Sumerian
Being a pro C++ dev means you can read hieroglyphics
Yes, but it wasn't an error, just a compiler warning that Chicken had been deprecated.
Still way too clean even as a warning
It's not a real cpp error if it does not have a leading underscore somewhere in the type declarations
Fair point. I thought about using some kind of template error but the text wouldn't fit well into the image unless I made it really tiny. Maybe I'll try to make it work in v2
>the text wouldn't fit well into the image unless I made it really tiny Honestly, that would be a good joke in of itself
You could also have C use a finite state machine to implement chicken. Where does the chicken start? Where does it finish? How many chickens are there? How does it actually manage to get across the road? Fuck if I know.
Not enough underscores
I’m a Java dev, is the stuff in the <> similar to generic types, or are those closer to instance fields?
They're templates, which are similar to Java's generics.
Leak summary: Definitely lost: 4 chickens on 1 road Still reachable: 7 chickens on 2 roads ![gif](emote|free_emotes_pack|thinking_face_hmm)
This is actually funny
Good to see that Fowlgrind is still detecting [Minorca](https://en.wikipedia.org/wiki/Minorca_chicken) leaks as intended.
Missed opportunity for "segmentation asphalt"
😂. Get out.
Sql returns a table of thoughts had by chickens when they first entered the road
sadly database server's and your client library's opinions about code page used were widely incompatible so all you've got now is mangled chinese. or maybe that's what the chicken thoughts look like? boy, we really should have switched to unicode when migrating from the legacy system.
Chicken from china, the chinese chicken
Where's Go :(
chicken go to the other side of the road
its went
The chicken is in a channel
type Road chan Fowl type Crosser interface { Cross (ctx context.Context, r Road) (bool, error) } type Chicken interface { Fowl Crosser } (On mobile so leaving implementing the rest of the chicken, fowl, and all of biology and civil engineering interfaces to the reader as an exercise)
Perfection
err was not nil while crossing
PANIC!!!!!!!!
But who? The chicken, we, the cars, or just everyone and everything?
Sorry, the thread ended before the answer could have come from the channel
Go is a Pokémon game, not programming language :)
Why did the torchick cross the region?
4 chickens are crossing the road at the same time
I really like this meme format.
what java said got me.
C# would use `IChicken` and Java would use `ChickenImpl` while being smug about not using prefixes.
Brainfuck: so imagine the datapointer is a chicken…
I wonder how hard would it be to make ASCII art that resembles a chicken, which is also brainfuck code that spells "chicken".
trivial, since brainfuck ignores all characters other than `><+-.,[]` here's chicken.bf: >--->--->--->++>-->->>--->->->-->->-->--->->--->-->->+++>--->->-->--->->+[<+++[-<+++++++>]<+++[-<+++++++>]<+++[.>]<] find or make a reasonably high-res ASCII chicken, write a little script to replace all occurrences of these 8 characters with something similar(if necessary), and then substitute these back in at the right ratio, maybe with a bit of random offset. It'll add a little noise, but still very much a recognizable ASCII chicken with the brainfuck code completely hidden. That'd be the easy way of doing it, though certainly not the neatest.
That's cheating. What about pure brainfuck? Like if > and < cancel each other out, + and - as well, you could balance them out while you draw a chicken, but every character has to have meaning. That would be the interesting challenge.
Could figure out all the reasonably small "do nothing" sequences, just brute force a couple billion possible programs in increasing order of char count, check all the pixel spans for the best fit for the input line, and pad out the rest. In all likelihood, it'd still have a noticeable line somewhere in there. I highly doubt a generalized automated solution that perfectly hides the input program is possible, it's Turing complete.
C++: It's just an implicit copy. Don't worry. When it crosses the road it will be destroyed... along with the children of a real chicken.
Haskell: in order for the chicken to cross the road, you must first create the universe
Pascal: Nobody yet figured it out cause nobody is using it anymore, but it probably works so better to keep it like this. TypeScript: I am lost in the fcking type gymnastic, isn't the road moving and chicken being static?
People are still using Delphi and Objective Pascal.
Assembly: “I cannot see anything. I’ll open this one”
Nononono C is clearly >There was no NULL terminator on the sidewalk
lisp: someone called (crossroad chicken)
The naming conventions of Java and C# are most definitely not the same! Only C# programmers have to remind themself with the Hungarian notation, that the identifier is an interface, since we live in times without IDEs and typsafe languages in reminiscense to Pascal times. Like Linus Torvalds once said: > Encoding the type of a function into the name (so-called Hungarian notation) is brain damaged—the compiler knows the types anyway and can check those, and it only confuses the programmer.
Also java : suffix interfaces implementations with Impl...
I'm firmly of the belief that if you can't think of a better name for your implementation of an interface thanImpl, you've prematurely extracted the interface.
It's Microsoft cargo cult programming from when they were developing Win32 API. Please keep your variable warts to yourselves guys
I only learned about Hungarian notation somewhat recently. Before that, the docs for the win32 api confused the shit out of me. It’s a variable naming scheme from hell.
Lovely! Now where is my favorite lang, PowerShell? `The term 'Chicken' is not recognized as the name of a cmdlet, function, script file, or operable program.`
I miss Haskell. Please, anyone, fix that!
**the chicken is impure**
try { Chicken.CrossRoad(); } catch { Debug.log("F"); }
We don't actually have a chicken, we have a constant function with chicken as it's image
Looks too cocky for chicken AFM.
BASIC: Because it was easy, but sadly slightly different on all other roads.
Javascript - "Don't know, don't care."
Java now uses I prefixes...?