{"id":29488,"date":"2021-11-28T22:53:19","date_gmt":"2021-11-28T22:53:19","guid":{"rendered":"https:\/\/www.thepicpedia.com\/blog\/adobe\/how-c-powers-adobe-document-cloud-with-gordon-dow-senior-computer-scientist\/"},"modified":"2021-11-28T22:53:20","modified_gmt":"2021-11-28T22:53:20","slug":"how-c-powers-adobe-document-cloud-with-gordon-dow-senior-computer-scientist","status":"publish","type":"post","link":"https:\/\/www.thepicpedia.com\/blog\/adobe\/how-c-powers-adobe-document-cloud-with-gordon-dow-senior-computer-scientist\/","title":{"rendered":"How C++ powers Adobe Document Cloud with Gordon Dow, senior computer scientist"},"content":{"rendered":"
\n

Adobe Document Cloud transforms old-school pen-and-paper processes into efficient digital transactions. From PDFs to electronic signatures, Document Cloud keeps businesses moving, no matter where people are, or which devices they\u2019re using. And much of it is built on C++.<\/p>\n

We talked to Gordon Dow, Adobe Acrobat lead and senior computer scientist, to find out why a programming language with its roots in the 1970s is still the smartest way to build today\u2019s most powerful business tools.<\/p>\n

C++ powers a lot of the Adobe Document Cloud architecture. Can you tell us why it\u2019s the right programming language for the job?<\/strong><\/p>\n

The things that jump to mind for me are: zero-overhead abstractions, strong typing, the ability to cleanly separate data structures from algorithms, the ability to push computation to (and find errors at) compile time, and deterministic finalization.<\/p>\n

\n
\n
\n

\"\"<\/p>\n

\u201cC++ has evolved continuously over the past thirty years, so a code base tends to reflect the sensibilities, experience, and constraints of its engineering team at the time of its inception.\u201d<\/h2>\n

Gordon Dow, Senior Computer Scientist, Lead, Adobe<\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n

If one were to sit down today and try to design a programming language with all of these features, I don\u2019t think anyone would come up with anything that much resembled C++. C++ started from C, which was little more than a lingua franca for assembly languages, and somehow managed to evolve into its present state, all while maintaining backwards compatibility.<\/p>\n

That backward compatibility is precisely what gives C++ its staying power. I can write brand new, modern C++ that directly calls an interface that was written in 1993 and it will just work. That said, it\u2019s not necessarily easy. When you\u2019re interoperating with older code, you have to know, for example, where you can and can\u2019t throw exceptions, and when you have to do your own resource management as opposed to letting RAII do its job.<\/p>\n

At some point this has to give. I give occasional talks on C++ to my team and every once in a while, I\u2019ll want to step into standard library or Boost code, and that code\u2014which has to be truly generic\u2014is incredibly hard to read. I\u2019m still waiting to wake up some morning and discover that everyone switched to Rust or D while I was sleeping. And we\u2019re all writing in Esperanto on our Dvorak keyboards.<\/p>\n

Why is Adobe the place to be if you\u2019re a C++ developer? Any tips for someone considering a role in C++ at Adobe?<\/strong><\/p>\n

C++ has evolved continuously over the past thirty years, so a code base tends to reflect the sensibilities, experience, and constraints of its engineering team at the time of its inception. When modifying an existing code base, it\u2019s a healthy instinct to write new code in the style of the old code, so these different coding styles tend to ossify and you wind up with very different \u201cdialects\u201d of C++ throughout the organization.<\/p>\n

That said, the exciting stuff is happening in the modern codebases, and necessarily so because the modern style, if used well, gives you all the features I mentioned. So stay up to date! Watch C++Now and CppCon videos on YouTube. Read Eric Niebler\u2019s, Andrzej Krzemie\u0144ski\u2019s, and Herb Sutter\u2019s blogs, and anything Sean Parent writes. And also remember the important rules that are true regardless of language: Try to make it easy to reason about your code. Keep your functions and classes small. Use regular types.<\/p>\n

Above all else, remember that C++ is an enormous, sprawling, evolved ecosystem, with more than its share of quirks, and that nobody knows everything about it. Go ahead and ask questions. There\u2019s almost certainly someone else out there to whom the answer is useful, and it\u2019s possible the question hasn\u2019t even occurred to them.<\/p>\n<\/div>\n

Source : Adobe<\/p>\n","protected":false},"excerpt":{"rendered":"

Adobe Document Cloud transforms old-school pen-and-paper processes into efficient digital transactions. From PDFs to electronic signatures, Document Cloud keeps businesses moving, no matter where people are, or which devices they\u2019re using. And much of it is built on C++. We talked to Gordon Dow, Adobe Acrobat lead and senior computer scientist, to find out why …<\/p>\n","protected":false},"author":1,"featured_media":29491,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[],"_links":{"self":[{"href":"https:\/\/www.thepicpedia.com\/wp-json\/wp\/v2\/posts\/29488"}],"collection":[{"href":"https:\/\/www.thepicpedia.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thepicpedia.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thepicpedia.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thepicpedia.com\/wp-json\/wp\/v2\/comments?post=29488"}],"version-history":[{"count":1,"href":"https:\/\/www.thepicpedia.com\/wp-json\/wp\/v2\/posts\/29488\/revisions"}],"predecessor-version":[{"id":29492,"href":"https:\/\/www.thepicpedia.com\/wp-json\/wp\/v2\/posts\/29488\/revisions\/29492"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.thepicpedia.com\/wp-json\/wp\/v2\/media\/29491"}],"wp:attachment":[{"href":"https:\/\/www.thepicpedia.com\/wp-json\/wp\/v2\/media?parent=29488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thepicpedia.com\/wp-json\/wp\/v2\/categories?post=29488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thepicpedia.com\/wp-json\/wp\/v2\/tags?post=29488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}