{"id":73209,"date":"2025-01-10T12:22:00","date_gmt":"2025-01-10T17:22:00","guid":{"rendered":"https:\/\/innowise-group.inno.ws\/?page_id=73209"},"modified":"2025-09-05T09:16:06","modified_gmt":"2025-09-05T13:16:06","slug":"googles-carbon-language","status":"publish","type":"post","link":"https:\/\/innowise.com\/it\/blog\/googles-carbon-language\/","title":{"rendered":"Il linguaggio Carbon di Google potrebbe sostituire il C++"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"73209\" class=\"elementor elementor-73209\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e6733c6 main-block elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e6733c6\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-5af7f03c\" data-id=\"5af7f03c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-40f647f9 elementor-widget elementor-widget-html\" data-id=\"40f647f9\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"breadcrumbs flex\">\n    <div class=\"info\"> \n    <a href=\"https:\/\/innowise.com\/\">\n  Main\n  <\/a>\n    <\/div>\n    <div class=\"info\">\n         <a href=\"https:\/\/innowise.com\/about-us\/\">\n  About us\n  <\/a>\n    <\/div>\n     <div class=\"info\">\n          <a href=\"https:\/\/innowise.com\/blog\/\">\n  Blog\n  <\/a>\n    <\/div>\n<\/div>\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\/\", \n  \"@type\": \"BreadcrumbList\", \n  \"itemListElement\": [{\n    \"@type\": \"ListItem\", \n    \"position\": 1, \n    \"name\": \"Top programming forums in 2021\",\n    \"item\": \"https:\/\/innowise.com\/blog\/googles-carbon-language\/\"  \n  },{\n    \"@type\": \"ListItem\", \n    \"position\": 2, \n    \"name\": \"Blog\",\n    \"item\": \"https:\/\/innowise.com\/blog\/\"  \n  },{\n    \"@type\": \"ListItem\", \n    \"position\": 3, \n    \"name\": \"Main\",\n    \"item\": \"https:\/\/innowise.com\/\"  \n  }]\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-78d33ae9 elementor-widget elementor-widget-html\" data-id=\"78d33ae9\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"article-info flex\">\n    <div class=\"info\"> \n    5 min read\n    <\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4f444666 elementor-widget elementor-widget-text-editor\" data-id=\"4f444666\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h1 class=\"title-tinder\"><span style=\"font-weight: 400; color: #ffffff;\">Google&#8217;s Carbon language might replace C++<\/span><\/h1>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2abf81ad elementor-widget elementor-widget-shortcode\" data-id=\"2abf81ad\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">[display_tags]<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-114bbf89 button-tinder elementor-hidden-tablet elementor-hidden-mobile\" data-id=\"114bbf89\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-163b650f article-description elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"163b650f\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-b381776 author-article\" data-id=\"b381776\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-74c3fe7c elementor-widget elementor-widget-text-editor\" data-id=\"74c3fe7c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<span style=\"font-weight: 400;\">At the CPP North conference, Chandler Carruth, a principal software engineer at Google, announced the release of the Carbon programming language. Google\u2019s Carbon is an experimental open-source language that is intended to be rather the successor to C++, but not its replacement. In the article, we\u2019ll take a closer look at Carbon, its goals, potential, and the reasons why C++ needs a successor.\n<\/span>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bff02ce elementor-widget elementor-widget-image\" data-id=\"bff02ce\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"720\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2022\/08\/Pic-1-1.png\" class=\"attachment-large size-large wp-image-73243\" alt=\"Google&#039;s Carbon language\" srcset=\"https:\/\/innowise.com\/wp-content\/uploads\/2022\/08\/Pic-1-1.png 1000w, https:\/\/innowise.com\/wp-content\/uploads\/2022\/08\/Pic-1-1-300x270.png 300w, https:\/\/innowise.com\/wp-content\/uploads\/2022\/08\/Pic-1-1-768x691.png 768w, https:\/\/innowise.com\/wp-content\/uploads\/2022\/08\/Pic-1-1-13x12.png 13w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3260bcab author-article-title elementor-widget elementor-widget-text-editor\" data-id=\"3260bcab\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2><span style=\"font-weight: 400;\">What\u2019s wrong with C++?<\/span><\/h2>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4fd559d0 elementor-widget elementor-widget-text-editor\" data-id=\"4fd559d0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tAccording to the <span style=\"text-decoration: underline;\"><a href=\"https:\/\/www.tiobe.com\/tiobe-index\/\" rel=\"nofollow\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">TIOBE Index for August 2022<\/span><\/a><\/span><span style=\"font-weight: 400;\">, C++ ranks 4th after <span style=\"text-decoration: underline;\"><a href=\"https:\/\/innowise.com\/technologies\/python-development\/\">Python<\/a><\/span>, C, and <span style=\"text-decoration: underline;\"><a href=\"https:\/\/innowise.com\/technologies\/java-development\/\">Java<\/a><\/span>. Since 2001, C++ has never dropped below 5th place, which indicates the high popularity of this programming language despite its age (first appeared in 1985). C++ has multiple advantages crucial for the development of performance-critical software. So why does it need a successor?<\/span>\n\nAs explained by Chandler Carruth, C++ falls short of the achievement of the language\u2019s major goals. They include the support of performance-critical software, simple syntax, language evolution, modern systems, and robust safety among others. The specific language features and bureaucratic issues prevent C++ from gradual improvement.\n\nAs for language peculiarities, C++ has accumulated high technical debt throughout its evolution. Moreover, it has inherited many legacy features from the C language. Besides, C++ users prioritize backwards compatibility to support existing C\/C++ ecosystems. At the same time, backwards compatibility doesn\u2019t allow for fixing the technical debt, hence the C++ evolution process makes it even more difficult for improvements to get implemented.\n\nSpeaking of bureaucratic issues, the process of C++ improvement is significantly slowed down by a committee (WG21) focused on standardization but not design. WG21 employs sluggish waterfall processes that lead to delays in making crucial decisions. Moreover, the committee has restricted access to most C++ experts and only represents certain companies and nations, ignoring the large C++ community.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2d503baf author-article-title elementor-widget elementor-widget-text-editor\" data-id=\"2d503baf\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Goals of the Carbon programming language<\/h2>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-45cb5b27 elementor-widget elementor-widget-text-editor\" data-id=\"45cb5b27\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tAs a successor language, Carbon has inherited the <span style=\"text-decoration: underline;\"><a href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2020\/p2137r0.html\" rel=\"nofollow\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">original goals for C++<\/span><\/a><\/span><span style=\"font-weight: 400;\"> and received an additional one. <\/span>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-caf5046 elementor-widget elementor-widget-image\" data-id=\"caf5046\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"720\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2022\/08\/Pic.png\" class=\"attachment-large size-large wp-image-73224\" alt=\"Carbon language\" srcset=\"https:\/\/innowise.com\/wp-content\/uploads\/2022\/08\/Pic.png 1000w, https:\/\/innowise.com\/wp-content\/uploads\/2022\/08\/Pic-300x270.png 300w, https:\/\/innowise.com\/wp-content\/uploads\/2022\/08\/Pic-768x691.png 768w, https:\/\/innowise.com\/wp-content\/uploads\/2022\/08\/Pic-13x12.png 13w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f4db61f elementor-widget elementor-widget-text-editor\" data-id=\"f4db61f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tBased on a successor language approach, Carbon focuses on 3 major issues that address the existing C++ challenges and allow us to consider Carbon as a promising project: interoperability, migration, and language evolution. Drawing on these points, Carbon creators strive to get rid of C++ technical debt, keep access to existing ecosystems, ensure rapid improvements, and avoid backwards compatibility using tool-based upgrades.\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-726969f author-article-title elementor-widget elementor-widget-text-editor\" data-id=\"726969f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2><span style=\"font-weight: 400;\">What are the promises of Carbon?<\/span><\/h2>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b971f0 elementor-widget elementor-widget-text-editor\" data-id=\"1b971f0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The information available at the moment allows us to consider Carbon as a very promising project. As for the practical side of the new programming language, Chandler Carruth claims that we can expect from Carbon a simpler grammar, introducer keywords (i.e. fn and var), a definition-checked generics system, and a steep learning curve. Carbon will inherit C&#8217;s high performance and avoid its major drawbacks.<\/p><p>On top of that, Carbon creators say Carbon will be an open-source programming language and fully interoperable with C++. Carbon code is very similar to C++ code, and in many cases, they are almost identical. Moreover, Carbon code can be integrated into C++ code. So, C++ developers who want to switch fully to Carbon will have a toolkit to automatically transliterate C++ libraries into code in the new language. Reverse migration is also possible. In the future, these libraries can be used in an existing C ++ project. All Carbon tools are hosted on GitHub and distributed under the Apache 2.0 license. So far, there is <span style=\"font-weight: 400;\">a demo Carbon interpreter<\/span><span style=\"font-weight: 400;\"> available.<\/span><\/p><p>An important part of the experimental Carbon project is the governance structure. The Carbon team is guided by the principles of inclusiveness and openness. The governance structure of Carbon is designed for fast decision-making, flexibility, and rapid development of the project. All the crucial decisions are made by Carbon leads, represented by Chandler Carruth, Kate Gregory, and Richard Smith at the moment. Since the Carbon project is based on the open-source development model, every user can send GitHub requests to suggest the project changes and drive the Carbon language evolution.<\/p><p>At the moment, Google employees are working on the Carbon programming language as an internal project. However, it is planned to reduce the level of involvement of the company in the project, since developers understand that for future success, Carbon must be an independent and community-driven project.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b79e1bc author-article-title elementor-widget elementor-widget-text-editor\" data-id=\"b79e1bc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">Bottom line<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4249f70 elementor-widget elementor-widget-text-editor\" data-id=\"4249f70\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\tIt is important to understand that Carbon is an experimental project and it is too early to state unequivocally that Carbon is a full-fledged successor to C++. According to the Carbon roadmap, the development of the main language constructions should be completed by the end of 2022, and this is exactly the time when Carbon 0.1 should be released. It will take time to assess the success of the project, but we can already talk about the high prospects of the Carbon programming language as the successor to C++ based on the announced features and principles of development. \n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4eff73b4 elementor-widget elementor-widget-html\" data-id=\"4eff73b4\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"thank-rating\">\n    Thank you for rating!\n<\/div>\n<div class=\"thank-comment\">\n    Thank you for comment!\n<\/div>\n<script src=\"\/wp-content\/themes\/hello-elementor\/assets\/js\/blog\/rating-star.js\"><\/script>\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4bb11db4 elementor-widget elementor-widget-html\" data-id=\"4bb11db4\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script src=\"\/wp-content\/themes\/hello-elementor\/assets\/js\/blog\/rating-star.js\"><\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ba9228c elementor-hidden-mobile e-con-full e-flex e-con e-child\" data-id=\"ba9228c\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b07d769 elementor-widget elementor-widget-shortcode\" data-id=\"b07d769\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">[post_share]<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-23b81d7 table-content-container\" data-id=\"23b81d7\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a0e0a7b author-wrapper e-flex e-con-boxed e-con e-parent\" data-id=\"a0e0a7b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e77628c elementor-widget elementor-widget-html\" data-id=\"e77628c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"author-wrap\">\r\n      <div class=\"author-info\">\r\n        <img decoding=\"async\"\r\n        class=\"author-info__img\"\r\n          src=\"\/wp-content\/uploads\/2022\/02\/dima-naz.jpg\"\r\n          width=\"50\"\r\n          height=\"50\"\r\n          alt=\"author\"\r\n        \/>\r\n        <div class=\"author-info__personal-data\">\r\n          <a class=\"author-info__personal-data__name\" href=\"https:\/\/innowise.com\/authors\/dmitry-nazarevich\/\">\r\n            Dmitry Nazarevich\r\n          <\/a>\r\n          <span class=\"author-info__role\">CTO<\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"author-gray-line\"><\/div>\r\n      <div class=\"author-date-publish\">\r\n        <span>Date:<\/span> <span>Jan 10, 2025<\/span>\r\n      <\/div>\r\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-section elementor-inner-section elementor-element elementor-element-7425206 elementor-section-full_width table-of-contents__sticky-container stickyWrapper72 elementor-section-height-default elementor-section-height-default\" data-id=\"7425206\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-dc93fc9 author-block\" data-id=\"dc93fc9\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0a89e34 ddcv elementor-widget elementor-widget-html\" data-id=\"0a89e34\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n\r\n.article-description > .e-con-inner{\r\n     align-items: baseline !important;\r\n}\r\n\r\n.stickyWrapper72{\r\n    position: sticky;\r\n    top: 72px;\r\n    bottom: auto;   \r\n}  \r\n\r\n<\/style>\r\n\r\n<script>\r\ndocument.addEventListener(\"DOMContentLoaded\", ()=>{\r\n        \r\nconst headerElement = document.querySelector(\".new-menu\");\r\n\r\nconst stickyElement = document.querySelector(\".stickyWrapper72\");\r\n\r\nconst headerElementH = headerElement.clientHeight;\r\n\r\n\r\nstickyElement.style.top =  headerElementH + 60 + \"px\";\r\n        \r\n});\r\n<\/script>\r\n\r\n<!--NOTE Change data-id in wrapper styles for hide this block on the mobile device screen-->\r\n<div class=\"toc-wrapper\">\r\n  <h4 class=\"toc-title\">Table of contents<\/h4>\r\n  <div class=\"toc toc-2\"><\/div>\r\n<\/div>\r\n\r\n<script>\r\n  \/\/NOTE Add the value from h2 as the key and the text you want to display as the key value in LINKS variable:\r\n  \/\/   const LINKS = {\r\n  \/\/       \"The demand for retail digital transformation\": \"The demand\"\r\n  \/\/   }\r\n\r\n  const LINKS = {\r\n    \"Unleashing the power of .NET 8\": \"gggggg\",\r\n    \"Revamping legacy systems: unlocking business potential through software modernization\":\r\n      \"hello\",\r\n  };\r\n\r\n  const OFFSET = 70;\r\n   const PADDING_BOTTOM_FOR_SCROLL = 100;\r\n  let headerList = [];\r\n  let allLinks = [];\r\n  \r\n  let ticking = false;\r\n     \r\n\r\n  const createList = () => {\r\n      \r\n      console.log('create');\r\n      \r\n      \r\n    const tocTarget = document.querySelector(\".toc.toc-2\");\r\n    const toc = document.createElement(\"ul\");\r\n    \r\n    \r\n    \r\n     headerList = [...document.querySelectorAll(\"h2\")];\r\n\r\n\r\n    \r\n    headerList = headerList.slice(0, -3);\r\n    \r\n    const filteredNodes = [document.querySelector(\".related_content_blog_container h2\")]\r\n    \r\n    headerList = headerList.filter((node)=> !filteredNodes.includes(node))\r\n    \r\n    \r\n   headerList.forEach((header,index) => {\r\n      const headerId = header.getAttribute(\"id\");\r\n      const headerText =\r\n        header.dataset.title && header.dataset.title !== \"\"\r\n          ? header.dataset.title\r\n          : header.textContent;\r\n          \r\n\r\n      const headerTocText = header.dataset.title;\r\n\r\n      const idFromText =\r\n        !headerId || headerId === \"\"\r\n          ? headerText\r\n              .toLowerCase()\r\n              .replace(\/[^\\w ]+\/g, \"\")\r\n              .replace(\/ +\/g, \"-\")\r\n          : headerId;\r\n          \r\n         \r\n\r\n      const newListItem = document.createElement(\"li\");\r\n      const newLink = document.createElement(\"a\");\r\n      newLink.setAttribute(\"href\", \"#\" + idFromText);\r\n      newLink.textContent = LINKS[headerText] || headerText;\r\n\r\n      newLink.addEventListener(\"click\", (e) => {\r\n          \r\n        e.preventDefault();\r\n        const y =\r\n          header.getBoundingClientRect().top +\r\n          window.pageYOffset -\r\n          PADDING_BOTTOM_FOR_SCROLL -\r\n          OFFSET;\r\n          ticking = true; \r\n        window.scrollTo({ top: y, behavior: \"smooth\" });\r\n        \r\n        setTimeout(()=>{\r\n            ticking = false;\r\n        },500);\r\n        \r\n      });\r\n      \r\n\r\n      newListItem.appendChild(newLink);\r\n    toc.appendChild(newListItem);\r\n    \r\n    \r\n    });\r\n    tocTarget.appendChild(toc);\r\n    allLinks = Array.from(document.querySelector(\".toc.toc-2\").querySelectorAll(\"ul li\"));\r\n  };\r\n\r\n  const setContainerHeight = () => {\r\n    const windowHeight = window.innerHeight;\r\n    const tocContainer = document.querySelector(\".ddcv\");\r\n\r\n    tocContainer.style.maxHeight = \"calc(100vh - 230px)\";\r\n    tocContainer.style.minHeight = \"200px\";\r\n  };\r\n\r\n\r\n  const checkScroll = () => {\r\n      const windowHeight = window.innerHeight;\r\n      const scrollTop = window.scrollY || document.documentElement.scrollTop;\r\n\r\n      let selectedHeaderIndex = -1;\r\n\r\n      headerList.forEach((header, index) => {\r\n        \r\n  const posTop = header.getBoundingClientRect().top;\r\n       \r\n\r\n const isInViewport = posTop + elem.clientHeight <= window.innerHeight ;\r\n \r\n\r\n \r\n if(isInViewport){\r\n      selectedHeaderIndex = index;\r\n }\r\n        \r\n\r\n\r\n        \r\n      });\r\n      \r\n\r\n\r\n        allLinks.forEach((link, i) => {\r\n            if(i === selectedHeaderIndex){\r\n              link.classList.remove(\"pre-active\");  \r\n              link.classList.add(\"active\");\r\n            }\r\n            if(i < selectedHeaderIndex){\r\n              link.classList.add(\"pre-active\"); \r\n               link.classList.remove(\"active\");\r\n            }\r\n             if(i > selectedHeaderIndex){\r\n            link.classList.remove(\"pre-active\");\r\n            link.classList.remove(\"active\");\r\n            }\r\n            \r\n            \r\n            \r\n        });\r\n        \r\n\r\n\r\n  };\r\n\r\n  const loadAllImages = () => {\r\n    const images = document.getElementsByTagName(\"img\");\r\n\r\n    for (let i = 0; i < images.length; i++) {\r\n      const img = images[i];\r\n      const src = img.getAttribute(\"data-src\") || img.src;\r\n      img.src = src;\r\n    }\r\n  };\r\n\r\n  loadAllImages();\r\n  \r\n  \r\n  \r\n\r\n\r\n  document.addEventListener(\"DOMContentLoaded\", () => {\r\n      \r\n      \r\n     setTimeout(()=>{\r\n           createList();\r\n    setContainerHeight();\r\n  \r\n    \r\n    document.addEventListener(\"scroll\", (event) => {\r\n  if (!ticking) {\r\n    checkScroll();\r\n  }\r\n});\r\n    \r\n    \r\n},300) \r\n\r\n    \r\n  });\r\n\r\n\r\n  \r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-dfc93ef rate-article elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"dfc93ef\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-b4a9343 rate-article-first-block\" data-id=\"b4a9343\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-6db50f8 rate-container\" data-id=\"6db50f8\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9a22e7c rate-text elementor-widget elementor-widget-text-editor\" data-id=\"9a22e7c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Rate this article:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-ee109ce rate-article-star-block\" data-id=\"ee109ce\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4f1f3ad elementor--star-style-star_unicode elementor-star-rating--align-left elementor-star-rating-tablet--align-left elementor-widget elementor-widget-star-rating\" data-id=\"4f1f3ad\" data-element_type=\"widget\" data-widget_type=\"star-rating.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-star-rating__wrapper\">\n\t\t\t\t\t\t<div class=\"elementor-star-rating\" title=\"4\/5\" itemtype=\"http:\/\/schema.org\/Rating\" itemscope=\"\" itemprop=\"reviewRating\"><i class=\"elementor-star-full\">&#9733;<\/i><i class=\"elementor-star-full\">&#9733;<\/i><i class=\"elementor-star-full\">&#9733;<\/i><i class=\"elementor-star-full\">&#9733;<\/i><i class=\"elementor-star-empty\">&#9733;<\/i> <span itemprop=\"ratingValue\" class=\"elementor-screen-only\">4\/5<\/span><\/div>\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-eabf73f\" data-id=\"eabf73f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e6c178a reviews elementor-widget elementor-widget-text-editor\" data-id=\"e6c178a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>4.8\/5 (45 reviews)<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c55ecdf rate-comment elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c55ecdf\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-f922cee comment-article-first-block\" data-id=\"f922cee\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-2adc2a1\" data-id=\"2adc2a1\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-ac90573 e-flex e-con-boxed e-con e-parent\" data-id=\"ac90573\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5ab5060 elementor-widget elementor-widget-shortcode\" data-id=\"5ab5060\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f100240-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"100240\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/it\/wp-json\/wp\/v2\/posts\/73209#wpcf7-f100240-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" enctype=\"multipart\/form-data\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"100240\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f100240-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/fieldset>\n<style>\n#form-templates .contact__info {\n  background-color: #f4f4f4;\n  padding: 70px 44px 70px 50px;\n  position: relative;\n  max-width: 540px;\n  width: 100%;\nborder: 1px solid #AEB1B7;\n}\n\n#form-templates .contact__info-background {\n  z-index: -1;\n  position: absolute;\n  top: 20px;\n  left: 20px;\n  width: 100%;\n  height: 100%;\n  border: 1px dashed #ef4557;\n}\n\n\n#form-templates .new-container{\ndisplay: flex;\njustify-content: space-between;\nflex-wrap: wrap;\n}\n\n\n#form-templates{\npadding: 100px 15px 100px 15px;        \n}\n\n#form-templates .contact__info-heading {\n  font-family: 'Sora' !important;\n  font-style: normal !important;\n  font-weight: 400 !important;\n  font-size: 36px !important;\n  line-height: 46px !important;\n  color: #2E2E2E !important;\n   margin-bottom: 60px !important;\n\n}\n\n\n#form-templates .message label{\ncolor: #585858 !important;   \n}\n\n.elementor-widget-container.form-template h2,.elementor-widget-container.form-template h1{\n font-size: 60px !important;\n  line-height: 70px !important;\n  font-family: \"Sora\", Sans-serif;\n  font-weight: 400;\n  margin: 0;  \n  margin-bottom: 20px;\n}\n\n\n\n\n.elementor-widget-container.form-template p{\n  font-family: \"Karla\", Sans-serif;\n  font-size: 22px;\n  font-weight: 400;\n  line-height: 28px;\n  color: var( --e-global-color-primary );\n  max-width: 700px;\n  margin: 0; \n  margin-bottom: 40px;\n} \n  \n\n\n.new-container #spinner{\nwidth: 50%;\nmax-width: 700px;\n}\n\n\n#form-templates .new-container #spinner div.contact-us__wrapper:nth-child(6){\ngap:30px; \n    \n}\n\n\n#form-templates .contact__info-heading {\n  margin-bottom: 67px;\n  font-size: 36px;\n  font-family: karla;\n  color:  #2E2E2E;\n\n  line-height: 49px;\n}\n\n#form-templates .contact__info-steps {\n  display: flex;\n  flex-direction: column;\n  max-width: 425x;\n  row-gap: 20px;\n  border-left: 1px solid #2e2e2e;\n}\n\n#form-templates .contact__info-block {\n  position: relative;\n  padding-left: 45px;\n}\n\n#form-templates .contact__info-block:last-child {\n  box-shadow: -1px 0 0 1px #f4f4f4;\n}\n\n#form-templates .contact__info-step {\n  position: absolute;\n  border: 1px solid #2e2e2e;\n  width: 40px;\n  height: 40px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 20px;\n  left: -20px;\n  top: -8px;\n  background-color: #F4F4F4;\n  color:  #2E2E2E;\n\nfont-family: Karla;\nfont-weight: 700;\nfont-size: 18px;\nline-height: 28px;\n\n}\n\n.elementor-widget-global .contact__info-step {\n        color:  #2E2E2E;\n}\n\n#form-templates .contact__info-text {\n  margin: 0;\n  font-size: 16px;\n  line-height: 26px;\n  color: #2E2E2E;\n  font-family: karla;\n\n  width: 100%;\n}\n\n\n#form-templates .contact-us__send{\nflex-shrink: 0;\nmargin-top:0;\n}\n\n\n\n@media screen and (max-width: 1279px) {\n    .new-container #spinner{\n        width: 100%;\n        max-width:100%;\n        margin-bottom:40px;\n    }\n    \n\n    .new-container .contact__info {\n        max-width: 700px !important;\n    }\n    \n}\n\n\n@media screen and (max-width: 1279px) {\n#form-templates{\npadding: 60px 15px 70px 15px;     \n}\n}\n\n\n\n@media screen and (max-width: 767px) {\n\n#form-templates .new-container #spinner div.contact-us__wrapper:nth-child(6){\ngap:20px; \n \n}\n\n\n  #form-templates .contact__info {\n    padding: 20px 20px 40px 40px;\n    margin: 0 auto;\n  }\n\n\n#form-templates{\npadding: 40px 15px 50px 15px;  \n    \n}\n\n  \n   .new-container #spinner{\n       \n    margin-bottom:30px;   \n   }\n   \n   \n   .elementor-widget-container.form-template h2,.elementor-widget-container.form-template h1{\n   font-size: 32px !important;\n    line-height: 42px !important;    \n   }\n   \n   \n   .elementor-widget-container.form-template p{\n       \n    font-size: 16px;\n    line-height: 20px;  \n    margin-bottom: 30px;\n \n       \n   }\n   \n   #form-templates .contact__info-heading{\n   font-size: 24px !important;\n    line-height: 49px !important;    \n       \n   }\n   \n\n.mailToContact{\nmargin-top: 10px !important;        \n}\n   \n\n  #form-templates .contact__info-heading {\n    font-size: 24px;\n    margin-bottom: 37px;\n  }\n\n  #form-templates .contact__info-background {\n    top: 10px;\n    left: 10px;\n  }\n\n  #form-templates .contact__info-text {\n    font-size: 12px;\n    line-height: 20px;\n  }\n  \n  \n  #form-templates .contact__info-heading {\n   margin-bottom: 35px !important;\n\n}\n\n}\n\n@media (max-width: 767px) {\n    .mailToContact {\n        max-width: 100%;\n    }\n}\n<\/style>\n\n<script>\nwindow.addEventListener('hashchange',function(e){if(window.history.pushState){window.history.pushState('','\/',window.location.pathname)}else{window.location.hash=''}})\n<\/script>\n\n\n<div id=\"form-templates\">\n<div class=\"elementor-widget-container form-template\">\n<a name=\"contact-form\"><\/a>\n<h2>Contact us<\/h2>\n<p><a id=\"calendlylink\" style=\"color: #c63031; border-bottom: 1px solid #c63031; padding: 0;\">Book a call<\/a> or fill out the form below and we\u2019ll get back to you once we\u2019ve processed your request.<\/p>\n<\/div>\n\n<div class=\"new-container\">\n\n\n<div class=\"contact-us__main\" id=\"spinner\" data-no-defer=\"1\">\n\n<div class=\"contact-us__wrapper\">\n\n<div class=\"name\">\n<label>Name<\/label>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"field_name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required contact-us__name\" id=\"contact-name\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Name*\" value=\"\" type=\"text\" name=\"field_name\" \/><\/span>\n<\/div>\n\n<div class=\"company\">\n<label>Company<\/label>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"company\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required contact-us__company\" id=\"contact-company\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Company*\" value=\"\" type=\"text\" name=\"company\" \/><\/span>\n<\/div>\n\n<\/div>\n\n<div class=\"contact-us__wrapper\">\n\n<div class=\"email\">\n<label>Email<\/label>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email contact-us__email\" id=\"contact-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Corporate email*\" value=\"\" type=\"email\" name=\"email\" \/><\/span>\n<\/div>\n\n<div class=\"phone\">\n<label>Phone<\/label>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"tel\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-tel contact-us__phone\" id=\"contact-phone\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Phone*\" value=\"\" type=\"tel\" name=\"tel\" \/><\/span>\n<\/div>\n\n<\/div>\n<div class=\"contact-us__wrapper subj\">\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-recipient\"><select class=\"wpcf7-form-control wpcf7-select\" id=\"form-field-subj_js\" aria-invalid=\"false\" name=\"your-recipient\"><option value=\"\">Subject*<\/option><option value=\"IT staff augmentation\">IT staff augmentation<\/option><option value=\"Turnkey product development\">Turnkey product development<\/option><option value=\"Support and enhancement\">Support and enhancement<\/option><option value=\"Careers\">Careers<\/option><option value=\"Other\">Other<\/option><\/select><\/span>\n\n<span class=\"wpcf7-form-control-wrap\" data-name=\"form-field-budget_js\"><select class=\"wpcf7-form-control wpcf7-select\" id=\"form-field-budget_js\" aria-invalid=\"false\" name=\"form-field-budget_js\"><option value=\"\">Project budget<\/option><option value=\"Under $15K\">Under $15K<\/option><option value=\"$15K-$30K\">$15K-$30K<\/option><option value=\"$30K-$100K\">$30K-$100K<\/option><option value=\"$100K-$250K\">$100K-$250K<\/option><option value=\"$250K-$500K\">$250K-$500K<\/option><option value=\"More than $500K\">More than $500K<\/option><\/select><\/span>\n\n<\/div>\n\n\n<div class=\"message\">\n<label>Message<\/label>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"message\"><textarea cols=\"40\" rows=\"1\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required contact-us__message\" id=\"contact-message\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Describe your needs in detail*\" name=\"message\"><\/textarea><\/span>\n<\/div>\n\n<div class=\"atvoice-wrap\">\n\n<div class=\"voice-wrap\">\n<span id=\"voice-mut\" class=\"voicetext\">Send us a voice message<\/span>\n         <div class=\"qc_voice_audio_wrapper\">\n            <div class=\"qc_voice_audio_container\">\n                <div class=\"qc_voice_audio_upload_main\" id=\"qc_audio_main\">\n                    <a class=\"qc_audio_record_button\" id=\"qc_audio_record\" href=\"#\" aria-label=\"Record an audio message\">\n                        <span class=\"dashicons dashicons-microphone\"><\/span> \u00a0<\/a> \n                <\/div>\n\n                <div class=\"qc_voice_audio_recorder\" id=\"qc_audio_recorder\" style=\"display:none\">\n\n                <\/div>\n                <div class=\"qc_voice_audio_display\" id=\"qc_audio_display\"  style=\"display:none\">\n                    <audio id=\"qc-audio\" controls src=\"\"><\/audio>\n                    <span title=\"Remove and back to main upload screen.\" class=\"qc_audio_remove_button dashicons dashicons-trash\"><\/span>\n                <\/div>\n            <\/div>\n            <input type=\"hidden\" value=\"\" name=\"qcwpvoicemessage\" id=\"qc_audio_url\" \/>\n        <\/div>\n        \n<\/div>\n\n\n<div class=\"attach-wrap\">\n<span class=\"voicetext\">Attach documents<\/span>\n\n<div class='attachment'>\n\n<div class=\"downloaded\">\n<span><\/span>\n<div class=\"deleteFile\"><\/div>\n<\/div>\n\n<div class=\"attachmentButton\" onclick=\"(function cl(e){if(e.target.nodeName == 'DIV'){e.target.parentNode.children[1].children[0].click(); }})(arguments[0]);\">\n\n<div class=\"innerText\">Upload file<\/div>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"att-files\"><input size=\"40\" class=\"wpcf7-form-control wpcf7-file\" accept=\".jpg,.png,.jpeg,.pdf\" aria-invalid=\"false\" type=\"file\" name=\"att-files\" \/><\/span>\n\n<div class=\"tip\" onclick=\"event.stopPropagation()\">\n<p>You can attach 1 file up to 2MB. Valid file formats: pdf, jpg, jpeg, png.<\/p>\n<\/div>\n\n<\/div>\n\n<\/div>\n\n<\/div>\n\n\n\n<\/div>\n\n<div class=\"contact-us__wrapper\"> \n<p class=\"pp\">By clicking Send, you consent to Innowise processing your personal data per our<a href=\"\/privacy-notice\/\"> Privacy Policy <\/a>to provide you with relevant information. By submitting your phone number, you agree that we may contact you via voice calls, SMS, and messaging apps. Calling, message, and data rates may apply.<\/p>\n\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"scoring_point\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"utmCampaign\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"utmContent\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"utmMedium\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"utmSource\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"utmTerm\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"location\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"city\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"ip\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"Summ\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"gclid\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"rating\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"urlCompany\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"urlWithParams\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"audioMessageLink\" \/>\n<input class=\"wpcf7-form-control wpcf7-submit has-spinner contact-us__send\" id=\"contact-send-button\" type=\"submit\" value=\"Send\" \/>\n<\/div>\n\n<div class='mailToContact'>You can also send us your request <\/br>to <a href=\"mailto:contact@innowise.com\">contact@innowise.com<\/a><\/div>\n\n<\/div>\n\n<div class=\"elementor-widget-container\" style=\"z-index:1;\">\n<div class=\"contact__info\">\n  <div class=\"contact__info-background\"><\/div>\n  <div class=\"contact__info-heading\">What happens next?<\/div>\n  <div class=\"contact__info-steps\">\n\n    <div class=\"contact__info-block\">\n      <div class=\"contact__info-step\">1<\/div>\n      <p class=\"contact__info-text\">Once we\u2019ve received and processed your request, we\u2019ll get back to you to detail your\n        project needs and sign an NDA to ensure confidentiality.<\/p>\n    <\/div>\n\n    <div class=\"contact__info-block\">\n      <div class=\"contact__info-step\">2<\/div>\n      <p class=\"contact__info-text\">After examining your wants, needs, and expectations, our team will devise a project\n        proposal with the scope of work, team size, time, and cost estimates.<\/p>\n    <\/div>\n\n    <div class=\"contact__info-block\">\n      <div class=\"contact__info-step\">3<\/div>\n      <p class=\"contact__info-text\">We\u2019ll arrange a meeting with you to discuss the offer and nail down the details.<\/p>\n    <\/div>\n\n    <div class=\"contact__info-block\">\n      <div class=\"contact__info-step\">4<\/div>\n      <p class=\"contact__info-text\">Finally, we\u2019ll sign a contract and start working on your project right away.<\/p>\n    <\/div>\n  <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\n<\/div>\n\n<\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"related_content_blog_container\">[related_content_list]<\/div><script>\n            jQuery( document ).ready(function($) {\n            var parentSection = $('[data-elementor-type=\"wp-page\"]');\n            if($('[data-elementor-type=\"wp-post\"]').length){\n                var parentSection = $('[data-elementor-type=\"wp-post\"]');\n            }\n            \n                parentSection.children().last().before($('.related_content_blog_container'));\n            });\n            <\/script><div class=\"other_services_container\">[need_other_services_v2]<\/div><script>\n                    jQuery( document ).ready(function($) {\n                        var parentSection = $('[data-elementor-type=\"wp-page\"]');\n                        if($('[data-elementor-type=\"wp-post\"]').length){\n                            var parentSection = $('[data-elementor-type=\"wp-post\"]');\n                        }\n                        \n                        console.log(parentSection);\n                        parentSection.children().last().before($('.other_services_container'));\n                        var sections = parentSection.find('.net-15.dt-16');\n                        for(var i = 0; i<sections.length; i++){\n                            if($(sections[i]).hasClass( 'net-15' ) && $(sections[i]).hasClass( 'dt-16' ) && $(sections[i]).hasClass( 'elementor-hidden-desktop' )==false){\n                                $(sections[i]).before($('.other_services_container'));   \n                            }\n                        }\n                        \n                    });\n                <\/script>","protected":false},"excerpt":{"rendered":"<p>Main About us Blog 5 min read Google&#8217;s Carbon language might replace C++ [display_tags]At the CPP North conference, Chandler Carruth, a principal software engineer at Google, announced the release of the Carbon programming language. Google\u2019s Carbon is an experimental open-source language that is intended to be rather the successor to C++, but not its replacement. [&hellip;]<\/p>\n","protected":false},"author":22,"featured_media":73247,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"_acf_changed":true,"inline_featured_image":false,"footnotes":""},"categories":[128,1021],"class_list":["post-73209","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-dmitry_author","tag-back-end-development","tag-news","tag-trends"],"acf":[],"_links":{"self":[{"href":"https:\/\/innowise.com\/it\/wp-json\/wp\/v2\/posts\/73209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/innowise.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/innowise.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/innowise.com\/it\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/innowise.com\/it\/wp-json\/wp\/v2\/comments?post=73209"}],"version-history":[{"count":0,"href":"https:\/\/innowise.com\/it\/wp-json\/wp\/v2\/posts\/73209\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/innowise.com\/it\/wp-json\/wp\/v2\/media\/73247"}],"wp:attachment":[{"href":"https:\/\/innowise.com\/it\/wp-json\/wp\/v2\/media?parent=73209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/innowise.com\/it\/wp-json\/wp\/v2\/categories?post=73209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/innowise.com\/it\/wp-json\/wp\/v2\/tags?post=73209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}