Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Meiwaku
Jan 10, 2011

Fun for the whole family!

Sweeper posted:

Lets not give the users something they don't understand, then they won't have to understand it!

Java, let's not give developers something they already understand and use well, because the summer intern may not understand it.

Adbot
ADBOT LOVES YOU

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug
Java, because जावा एक प्रोग्रामिंग भाषा मूलतः सन माइक्रोसिस्टम्स (जो बाद से Oracle निगम में विलय कर दिया गया है) में जेम्स गोसलिंग द्वारा विकसित की है और सन माइक्रोसिस्टम्स जावा मंच का एक प्रमुख घटक के रूप में 1995 में जारी है. भाषा बहुत सी से अपने वाक्यविन्यास के व्युत्पन्न और सी + +, लेकिन एक सरल वस्तु मॉडल और किसी से भी कम कम स्तर की सुविधाएं है सी या सी + +.जावा अनुप्रयोगों आमतौर पर (वर्ग फ़ाइल) bytecode है कि किसी भी जावा वर्चुअल मशीन (JVM) पर कंप्यूटर वास्तुकला की परवाह किए बिना चला सकते हैं संकलित हैं. जावा एक सामान्य प्रयोजन, समवर्ती, वर्ग आधारित वस्तु उन्मुख भाषा है कि विशेष रूप से संभव के रूप में कुछ कार्यान्वयन निर्भरता के रूप में बनाया गया है. यह आवेदन डेवलपर्स "एक बार लिखने के लिए, कहीं भी चला" (WORA), एक मंच पर जिसका अर्थ है कि कोड है कि रन नहीं की जरूरत करने के लिए दूसरे पर चलाने के लिए फिर कंपाइल किया जाना नहीं करना है. जावा के रूप में उपयोग में सबसे लोकप्रिय प्रोग्रामिंग भाषाओं की एक 2012 की है, क्लाइंट सर्वर वेब अनुप्रयोगों के लिए विशेष रूप से एक रिपोर्ट 10 लाख उपयोगकर्ताओं के साथ [9] [10] है. मूल और संदर्भ कार्यान्वयन जावा compilers, आभासी मशीन, और वर्ग पुस्तकालयों सूर्य द्वारा 1995 से विकसित किए गए. मई 2007 के रूप में, जावा समुदाय प्रक्रिया, सन GNU जनरल पब्लिक लाइसेंस के तहत अपने जावा प्रौद्योगिकियों के सबसे relicensed के विनिर्देशों के साथ अनुपालन में. दूसरों को भी इन धूप प्रौद्योगिकियों के जावा और GNU क्लासपाथ के लिए GNU कंपाइलर के रूप में वैकल्पिक कार्यान्वयन, विकसित किया है.paras

rotor
Jun 11, 2001

classic case of pineapple derangement syndrome

Zombywuf posted:

Let's not give user's anything. gently caress users. If they can't write it themselves they don't deserve it.

god I hate users SO MUCH

Zombywuf
Mar 29, 2008

rotor posted:

god I hate users SO MUCH

Users are the worst. Except for developers.

Wheany
Mar 17, 2006

Spinyahahahahahahahahahahahaha!

Doctor Rope

Zombywuf posted:

Users are the worst. Except for developers.

Gazpacho
Jun 18, 2004

by Fluffdaddy
Slippery Tilde

Zombywuf posted:

Oh how I wish for a language that had read more than 2 chapters of CSP.
are you talking about all the traces stuff because i dont see how that works into a language

Zombywuf
Mar 29, 2008

Gazpacho posted:

are you talking about all the traces stuff because i dont see how that works into a language

Wouldn't it be great to be able to trace your programs like that? Especially if the language was designed for it. Even to be able to place traces as constraints in your code that were statically checked.

Rufus Ping
Dec 27, 2006





I'm a Friend of Rodney Nano
it wouldnt be particularly difficult to transform an occam program into something fdr2 can understand

Zombywuf
Mar 29, 2008

Turns out I was wrong about C# http://unspecified.wordpress.com/2012/04/19/the-importance-of-language-level-abstract-unicode-strings/

It is 2012, why is this still so poo poo?

X-BUM-RAIDER-X
May 7, 2008
because the world is still racist as gently caress

X-BUM-RAIDER-X
May 7, 2008

double sulk
Jul 2, 2010

CHROMES HINDU TRANSLATOR

double sulk
Jul 2, 2010

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord

OBAMA BIN LAUGHIN posted:

because the world is still racist as gently caress
faaaaart/

Zombywuf
Mar 29, 2008

Racist against mathematicians.

Janitor Prime
Jan 22, 2004

PC LOAD LETTER

What da fuck does that mean

Fun Shoe

Zombywuf posted:

Racist against mathematicians.

David Hilbert :smith:

trex eaterofcadrs
Jun 17, 2005
My lack of understanding is only exceeded by my lack of concern.

Hard NOP Life posted:

David Hilbert :smith:

georg cantor :(

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip

did 9/11

Zombywuf
Mar 29, 2008

I hear Grothendieck went into hiding because of bad unicode handling of his theorems.

Stringent
Dec 22, 2004


image text goes here

i've always wondered if david foster wallace's essay on cantor was just some extremely meta allusion to the title of infinite jest

JawnV6
Jul 4, 2004

So hot ...
cantor for leibowitz

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord
this is for that cat who wanted to learn lisp:

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord
I dunno amazon just recommended this to me

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

X-BUM-RAIDER-X
May 7, 2008

this but moose milkie

Tiny Bug Child
Sep 11, 2004

Avoid Symmetry, Allow Complexity, Introduce Terror
i too would be angry at someone writing needlessly verbose code when <?= $id ?> would work just fine

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

OBAMA BIN LAUGHIN posted:

this but moose milkie

where do you think i got the gif from http://mlyp.tumblr.com/page/5

vapid cutlery
Apr 17, 2007

php:
<?
"it's george costanza" ?>

MononcQc posted:

I'm due for a carepost on why node.js is a terrible idea.

Let's say I'm writing a server app decades ago. I start from scratch, on a computer with a single core. I first write my little socket acceptor dealing with TCP stuff. It opens a listen socket, waits to accept a connection, and then parses the request, dispatches it to some library function I have written, which goes fetch the data, builds the page that will result in it, then push it to the client. I then go back and accept another connection. This gives me an execution model a bit like that:

code:
accept -> parse -> dispatch -> read -> read more -> write -> push.
If two requests come at the same time under that model, one of these will have to wait until the other one is done before even being able to start:

code:
accept -> parse -> ... -> write -> push -> accept -> parse -> ... -> write -> push.
Realizing this, I wish I had parallelism to allow a flow more like this:

code:
accept -> parse -> dispatch -> read -> read more -> write -> push.
accept -> parse -> dispatch -> read -> read more -> write -> push.
But I can't -- I'm using a single processor and I am using a poo poo platform that doesn't support concurrency in any way (coroutines, threads [OS threads included], erlang-style processes [akka included], clojure-style actors, etc.) because I'm in the stone-age of computers and also no library for this exists. So what do I do? Well, I guess I'll break them up and track them by hand with callbacks -- it's the only way:

code:
(accept 1) -> (accept 2) -> (parse 1) -> (parse 2) -> (dispatch 1) -> ...
Which I guess is kind of okay, but annoying. poo poo can be locked up, I need to manually split everything in callbacks that will register themselves in order to know when things are done (something like resource.ready(callback)), I need to keep track of everything manually (is this parse for request 1, 2 or 73?).

Then at some point, computer evolution allows us to have things like threads and processes, and other proper concurrency mechanisms. By making things fork, go parallel, go async, or whatever after accepting, I'm able to serve two queries at once, without special care. If I have only my one processor with one core, then it will transform:

code:
accept -> parse -> dispatch -> read -> read more -> write -> push.
accept -> parse -> dispatch -> read -> read more -> write -> push.
automatically into:

code:
accept ->        parse ->          dispatch ->             read -> ...
        accept ->          parse ->             dispatch ->        ...
without me even needing to make a special effort, especially if there's a form of preemptive scheduling going on. I won't have to understand the callback based form of:

code:
(accept 1) -> (accept 2) -> (parse 1) -> (parse 2) -> (dispatch 1) -> ...
which will be declared as:

code:
accept (when accepted call parse callback)
parse (when parsed call dispatch callback)
dispatch (read once, when done, call dispatch2)
dispatch2 (read a second time, also when done reading, write)
read (when done call callback)
write (when done reading, push)
I'll only need to keep my code pretty much the same.

Then at some point, I may gain parallelism on top of it Awesome, poo poo will go great, except maybe my writes, which will need to block to be sane. What I'll be able to do with my concurrent code (not callback-based) is:

code:
accept -> parse -> dispatch -> read -> read more -> write -> push.
accept -> parse -> dispatch -> read -> read more ->        write -> push.
My code that was concurrent is now parallel by default, and I limit how much blocking I need to do (assuming the write is written to block correctly, either via transactions, safe queues, mutexes, locks or whatever). However, if I go back to my callback-based code and get parallel, what I get is still this:

code:
(accept 1) -> (accept 2) -> ... (write 1) -> (write 2) -> (push 1) -> (push 2)
And I want to get the speedup of my friends in the parallel and concurrent worlds. So I know what I'll do! I'll add non-blocking IO and will send poo poo to concurrent drivers in charge of doing poo poo right!

code:
(accept 1) -> ... ->          ->              -> (write 1) -> (write 2) ->
                     (read 1)    (read more 1)                             (push 1)
                     (read 2)    (read more 2)                             (push 2)
See? I got the parallelism going! I only did so at the cost of a shittier way to read and write code, still as sensitive to failures or blocks from independent requests, and relying heavily on the implementation of individual drivers not to gently caress my poo poo up! It's still worse on every level, but hey, I get to keep using my callback-based code (not that it's impossible to do in concurrent/parallel systems anyway). Hooray.

While the modern world of programming on servers has moved to concurrent and parallel methods a long while ago (mostly because they are objectively better), Javascript users with node.js came crashing through the door and said "we have a great new model! it's callbacks with non-blocking IO! it's loving great!".

Everyone who is not node.js knows what they propose is worse than what exists. It's like someone inventing PHP again, but for server-side platforms.

Node still has a decent community, interesting libraries, documentation, etc. In some cases better than many other communities and libraries. Parallel and concurrent code still is tricky to write without high-level constructs to keep you from having deadlocks, memory corruption, etc. and requires a lot of discipline otherwise.

This changes nothing to the fact that the underlying model of node.js is still outdated garbage. It's the worst of both world.

you could just say cooperative multitasking is bad but i don't think anyone who really uses node even knows what that means

Coffee Jones
Jul 4, 2004

16 bit? Back when we was kids we only got a single bit on Christmas, as a treat
And we had to share it!

Otto Skorzeny posted:

mumble mumble gar1t on youtube

https://www.youtube.com/watch?v=b2F-DItXtZs oh wow :allears:

rotor
Jun 11, 2001

classic case of pineapple derangement syndrome

i had a coworker who made a point to call bjarne stroustroup "darn jockstrap" and every time he did it he'd grin like a child and look around to make sure everyone got the joke

god i hated that guy so much

rotor
Jun 11, 2001

classic case of pineapple derangement syndrome
because im bjarne irl and it really hurt my feelings

double sulk
Jul 2, 2010


is that true about mongodb that it "stages data to be written later" cause if so then lol

rotor
Jun 11, 2001

classic case of pineapple derangement syndrome

lol @ 1:41

MononcQc
May 29, 2007

gucci void main posted:

is that true about mongodb that it "stages data to be written later" cause if so then lol

it stages it in /dev/null

MononcQc
May 29, 2007

vapid cutlery posted:

you could just say cooperative multitasking is bad but i don't think anyone who really uses node even knows what that means

Last time something like that happened, node.js people took a blog post that had a fibonacci server example to demonstrate CPU-intensive code would block node in the most literal sense, and you then had 2-3 days of node programmers trying to prove they could write good fibonacci servers and posting the results on hacker news.

JawnV6
Jul 4, 2004

So hot ...
so it took hackernews node programmers 3 days to find the closed form fibonacci?

Gazpacho
Jun 18, 2004

by Fluffdaddy
Slippery Tilde
no the blogger specifically said closed form was beside the point

Opinion Haver
Apr 9, 2007

MononcQc posted:

Last time something like that happened, node.js people took a blog post that had a fibonacci server example to demonstrate CPU-intensive code would block node in the most literal sense, and you then had 2-3 days of node programmers trying to prove they could write good fibonacci servers and posting the results on hacker news.

it's like fizzbuzz all over again

JawnV6
Jul 4, 2004

So hot ...

Gazpacho posted:

no the blogger specifically said closed form was beside the point

i dont believe this contradicts me

Adbot
ADBOT LOVES YOU

Gazpacho
Jun 18, 2004

by Fluffdaddy
Slippery Tilde
In a cooperative multitasking system you have to insert explicit yields so that a long computation in one task can run concurrently with other tasks. The yields have to be tuned so that the computation is sufficiently granular.


|
|


In a preemptive multitasking system you have to insert explicit locks so that a data modification from one task does not run concurrently with others. The locks have to be tuned so that data synchronization is sufficiently granular.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply