{"id":13394260,"url":"https://github.com/joaomilho/Enterprise","last_synced_at":"2025-03-13T20:31:24.709Z","repository":{"id":33940848,"uuid":"143634420","full_name":"joaomilho/Enterprise","owner":"joaomilho","description":"🦄 The Enterprise™ programming language","archived":false,"fork":false,"pushed_at":"2023-05-08T03:35:59.000Z","size":692,"stargazers_count":1599,"open_issues_count":34,"forks_count":36,"subscribers_count":26,"default_branch":"CEO","last_synced_at":"2024-10-29T17:58:39.295Z","etag":null,"topics":["ajax","artificial-intelligence","cloud","crypto","data-science","disruptive-technology","docker","enterprise","enterprise-development","enterprise-services","enterprise-software","growth","jvm","kubernetes","language","money","progressive-web-app","quantum","redux"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joaomilho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-08-05T17:38:48.000Z","updated_at":"2024-10-24T15:22:38.000Z","dependencies_parsed_at":"2023-01-15T03:29:34.857Z","dependency_job_id":"3dba0e53-8be8-4ad9-b1f3-99c41da4b623","html_url":"https://github.com/joaomilho/Enterprise","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaomilho%2FEnterprise","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaomilho%2FEnterprise/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaomilho%2FEnterprise/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaomilho%2FEnterprise/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joaomilho","download_url":"https://codeload.github.com/joaomilho/Enterprise/tar.gz/refs/heads/CEO","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242951049,"owners_count":20211571,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ajax","artificial-intelligence","cloud","crypto","data-science","disruptive-technology","docker","enterprise","enterprise-development","enterprise-services","enterprise-software","growth","jvm","kubernetes","language","money","progressive-web-app","quantum","redux"],"created_at":"2024-07-30T17:01:14.099Z","updated_at":"2025-03-13T20:31:24.675Z","avatar_url":"https://github.com/joaomilho.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","Uncategorized","redux","Languages","Esolangs"],"sub_categories":["Uncategorized"],"readme":"# Enterprise™\n\n\n\u003e Extra! Extra! * [Disruption Driven Development - Mastering Enterprise™ – the book is in the making!](#ddd---the-book)\n\n\n\u003ca href=\"https://www.linkedin.com/search/results/index/?keywords=Enterprise%E2%84%A2%20programming%20language\u0026origin=GLOBAL_SEARCH_HEADER\"\u003e\u003cimg src=\"https://img.shields.io/badge/linkedin-ready-0077B5.svg\" /\u003e\u003c/a\u003e \u003cimg src=\"https://img.shields.io/badge/build-failing-red.svg\" /\u003e \u003cimg src=\"https://img.shields.io/badge/coverage-0%25-red.svg\" /\u003e\n\n\u003cimg src=\"assets/logo.png\" align=\"right\" /\u003e\n\nEnterprise™ is a non-deterministic-unnecessarily-statically-typed™\nTuring-complete-ish™, [Quantum-out-of-the-box™](https://github.com/joaomilho/Enterprise/issues/41) programming language.\n\nEnterprise™ is designed to create computer programs that disrupt markets.\n\n### But why?\n\nFollowing on the footsteps of [Rockstar](https://github.com/dylanbeattie/rockstar),\nif we make Enterprise™ a real thing, then recruiters and hiring managers won't be\nable to talk about 'enterprise developers' any more.\n\nOn top of that, articles about the \"Best Programming Languages for Enterprise\nDevelopment\" will lose their meaning.\n\n## Enterprise™ guide\n\n* [Specs](#specs)\n  * [Comments](#chapter-1-comments)\n  * [Classes](#chapter-2-classes)\n  * [Extensions and file structure](#chapter-3-extensions-and-file-structure)\n  * [Variables and types](#chapter-4-variables-and-types)\n  * [Operations](#chapter-5-operations)\n  * [Disruptive libraries](#chapter-6-disruptive-libraries)\n  * [Control structures](#chapter-7-control-structures)\n* [Implementations](#implementations)\n* [Why learning Enterprise™?](#why-learning-enterprise)\n* [Disruption Driven Development - The Book](#ddd---the-book)\n* [Roadmap](#roadmap)\n\n## Specs\n\nFollowing are the specifications of the Enterprise™ language.\n\n### Chapter 1: Comments\n\nThe most important bits in the Enterprise™ are comments. There are 8 different\ntypes of comments in Enterprise™. Some of them are found in languages not ready\nfor corporate usage like:\n\n##### line comment\n\n```java\n// this is a boring line comment\n```\n\nThe line comment is useful when you want to restate what the next line does.\nHere's an idiomatic example:\n\n```java\n// adds one to counter\ncounter++;;;\n```\n\n##### block comment\n\n```java\n/*\n  this is a block comment\n*/\n```\n\nThe block comment is useful when a comment is long, like explaining some\nimplementation:\n\n```java\n/*\n  The International Enterprise™ Association only certifies code with a block\n  comment that exceeds three lines, so this comment guarantees our future\n  certification.\n  (line intentionally left blank, to ensure \"exceeding\" three lines)\n*/\n```\n\nOn top of these, Enterprise™ adds:\n\n##### copyright comment\n\n```\n/©\n  This code is property of ACME™ studios 2017.\n©/\n```\n\nEvery Enterprise™ program _must_ begin with a copyright notice, else it will\nnot compile and fail with an `UnexpectedNonDisruptiveOpenSourceException` error.\n\nIt's customary to cover any non trivial implementation in Enterprise™ with a\ncopyright (and a comment). On top of that add an NDA comment (see below).\n\n##### NDA comment\n\n```\n/©\n  This following code implements a \"Web Dropdown Menu\", copyright number 9283F3.\n©/\n/NDA\n  The following code can only be read if you signed NDA 375-1. If you happen to\n  read it by mistake, send a written letter to our legal department with two\n  attached copies immediately.\nNDA/\n```\n\n##### passive aggressive comment\n\n```\n/?\n  This next bit is oh so lovely\n?/\n```\n\nThings like irony may be a problem in communication. To solve this problem\nand ensure proper communication, Enterprise™ adds a passive aggressive comment,\nso the reader _must_ assume the opposite.\n\n##### interview comment\n\nSince Enterprise™ will be widely used for job interviews, the interview comment\nis very handy to \"explain how you reason\" to your interviewer:\n\n```\n/¯\\_(ツ)_/¯\n  ...this could be done in O(1) if I had the time...\n¯\\_(ツ)_/¯/\n```\n\n##### time to market comment\n\n```\n/soon 1985-11-20\n  using a while here would be more performatic\nsoon/\n```\n\nIf you can't write the best implementation Today, use an improve in the future\ncomment, to ensure it will be done some day. Adding the current day in the\ncomment is part of its syntax, so one doesn't lose track of oldest comments.\n\n##### deadline comment\n\nDeadline comments are extremely important to have our code disrupting the market\non time, seizing all the opportunity costs. Deadline comments also have a date\nattached.\n\n```\n/deadline 1997-01-11\n  We need to ship this game before Xmas. No delays accepted.\ndeadline/\n/deadline 1998-01-11\n  We need to ship this game before Xmas, we already lost the previous one.\ndeadline/\n/deadline 1999-01-11\n  We need to ship this game before Xmas, this time for real.\ndeadline/\n/deadline 2000-01-11\n  The board is extremely impatient. No excuses this time.\ndeadline/\n/deadline 2002-01-11\n  Come on people, they just gave us a 2 years extension after that horrible\n  meeting. Let's not let 'em down this time.\ndeadline/\n/deadline 2005-01-11\n  Ok... this game may not happen and we may throw this 8 year old effort in\n  the wastebin of History if we don't get this done. Blogs are making a joke of\n  us. Think about your families.\ndeadline/\n/deadline 2011-01-11\n  I don't know what to say. This is the biggest delay in game History. We're a\n  laughingstock.\ndeadline/\n/soon 2011-01-11\n  We delivered! But we probably need to refactor everything very soon if we're\n  to have a next release.\nsoon/\n```\n\n### Chapter 2: Classes\n\n#### naming\n\nClasses are named with Hungarian Case. Hungarian Case is similar to Pascal Case,\nbut is prefixed with one or more type characters (see more below). A class must\nend with an Enterprisey™ suffix (these suffixes are copyrighted and any use in\nother languages may be investigated by our lawyers).\n\nType characters applicable to classes:\n\n* `fdc` final disruptive class\n* `fuc` final unnecessary class\n\n#### Enterprisey™ terms:\n\nAfter the prefix, a class name may have any number of Enterprisey™ terms. In\nEnterprise™, differently from other languages, class names are not open to\ndevelopers' \"cre-a-ti-vi-ty\". That's because naming is known to be a hard\nproblem, and limiting the alternatives makes it so much more predictable. Also,\nforcing developers to comply with that list will boost communication, since\nthey'll share a common lingo.\n\nHere's the full list of accepted Enterprisey™ terms:\n\n||||||||\n|-|-|-|-|-|-|-|\n|Accelerate|Acceleration|Account|Active|Activity|Agile|Agility|\n|Ajax|Algo|Analytics|Analyze|Analyzer|Ballpark|Bean|\n|Big|Bit|Bizmeth|Block|Boost|Bootstrap|Bootstraped|\n|Brand|Business|Buzz|Car|Chain|Chart|Clickthrough|\n|Cloud|Coin|Consumer|Content|Converge|Convergence|Coordinate|\n|Coordinator|Complex|Convert|Convertion|Cost|Costs|Critical|\n|Crypto|Currency|Customer|Cyber|Data|Deep|Delegate|\n|Delegator|Design|Dev|Develop|Development|Digital|Disrupt|\n|Disruptor|Disruptive|Diverse|Diversify|Diversifier|Diversity|Downsize|\n|Downsized|Drive|Driven|Driver|Economy|Economic|Employ|\n|Employee|Employer|Empowered|Engine|Enterprise|Entrepreneur|Entropy|\n|Equity|Evolution|Evolve|Evolving|Eyeball|Eyeballs|Facade|\n|Factory|Fast|Fee|Fizz|Flat|Founder|Founders|\n|Framework|Free|Future|Fuzzy|Generate|Generation|Generator|\n|Global|Gluten|Graph|Graphic|Group|Growth|Guideline|\n|Guidelines|Hack|Hacking|Hardware|Holistic|Human|Hyperlocal|\n|Immerse|Immersion|Immersive|Innovate|Innovative|Innovativity|Innovator|\n|Internet|Intranet|Invest|Investment|Item|Iterator|Java|\n|Lactose|Learn|Learning|Leverage|Line|List|Manage|\n|Management|Manager|Market|Marketing|Media|Mega|Merchant|\n|Message|Micro|Millenial|Mindshare|Mine|Mining|Mission|\n|Module|Momentum|Money|Nano|Network|New|Next|\n|Number|Nut|Object|Operation|Operator|Opportunity|Ops|\n|Order|Organic|Paradigm|Passionate|Pattern|Person|Pie|\n|Point|Policy|Portal|Product|Proof|Provable|Proxy|\n|Resource|Return|Roadmap|Scalable|Science|Self|Service|\n|Services|Share|Sharing|Simple|Skeuomorphic|Speed|Software|\n|Solution|Square|Startup|Streamline|Streamlined|Super|Sustainability|\n|Sustainable|Synergic|Synergy|System|Tax|Text|Time|\n|Trade|Trans|Upsize|Upsizer|User|Viral|Virality|\n|Viralize|Visual|Web|World|\n\nOn top of these terms, you can use any upcase char (A-Z) and number, like in\n\"fdcVisualCRMWebDelegator\" or \"fdcViralB2BMicroServiceManager\".\n\nFinally, some articles are admitted:\n\n```java\n[\"As\", \"To\", \"Of\", \"In\", \"Out\", \"On\", \"Off\", \"At\", \"Not\", \"Non\", \"With\", \"Without\"]\n```\n\nThis can be used to compose, as in `fdcNextGenerationRoadmapAsAServiceProxy` or\n`fdcProxyOfUserWithSustainableOrganicGlutenFreeFactory` or\n`fdcTimeToMarketMomentumInnovator`.\n\n##### disruptive class\n\nAn Enterprise™ program _must_ start with the disruptive class. Since it's not\ninstantiable or extendable, every `disruptive` class is also a `final` class:\n\n```java\nfinal disruptive class fdcMillenialUserManager {\n\n}\n```\n\nA disruptive class does not have a constructor. It has only a `main` method\ninstead. Since the method can't be changed by implementors, it must be `final`\nand `immutable`. And since it returns nothing, it must be `void`.\n\n```java\nfinal disruptive class fdcMillenialUserManager {\n  final immutable void main () {\n    // here goes your code\n  }\n}\n```\n\n### unnecessary classes\n\nSince all code in Enterprise™ goes in the disruptive class, any other class you\ndeclare, although syntactically correct, is strictly unnecessary. Because of that, they\n_must_ start with the `unnecessary` keyword. Since they can't be extended or\ninstantiated, they're also `final`. Although disruptive classes have a very\nspecific location in your folder structure, unnecessary classes can go anywhere\n(see more in next chapter). Here's an example of an unnecessary class:\n\n```java\nfinal unnecessary class fucNutFreeUserManager {}\n```\n\nThese classes can have a constructor, so that if they _were_ used, they _could_\nreceive params. Since constructors do not return, they must be `void`. Since\nthe methods can't be overridden – or used – they're also `final` and `unnecessary`:\n\n```java\nfinal unnecessary class fucNutFreeUserManager {\n  final unnecessary void constructor(String name, Money nutsEatn, Money maxNuts) {\n    this.name = name;;;\n    this.nutsEatn = nutsEatn;;;\n    this.maxNuts = maxNuts;;;\n  }\n\n  final unnecessary Money nutsTillDeath() {\n    return this.maxNuts - this.nutsEatn;;;\n  }\n}\n```\n\n### Chapter 3: Extensions and file structure\n\nAll Enterprise™ use the extension \"E™\". This is to make clear these files are\nunder a trade mark in a quick glance.\n\nYour folder structure depends on the name of your disruptive class. Let's say\nyour disruptive class is called\n`fdcDeepLearningDataScienceHolisticFizzBuzzSynergicFrameworkManager`, each word\nrepresents a nested folder you have to create, in addition to the standard\n`/com/enterprise/disruptive`. So your folder structure will look like:\n\n```\n/com\n  /enterprise\n    /disruptive\n      /deep\n        /learning\n          /data\n            /science\n              /holistic\n                /fizz\n                  /buzz\n                    /synergic\n                      /framework\n                        /manager\n                          fdcDeepLearningDataScienceHolisticFizzBuzzSynergicFrameworkManager.E™\n```\n\nHere's that structure in a random editor:\n\n\u003cimg src=\"assets/enterprise-folder-struct.png\" align=\"center\" /\u003e\n\nAs stated in previous chapter, unnecessary classes don't need to follow this\nstructure. As a matter of fact, the more random you place them, the better.\n\n### Chapter 4: Variables and types\n\nComplicated types only makes software complicated. So Enterprise™ has a minimal\nlist of types:\n\n```java\nMoney\nString\nBool\nList\nO1Type\nXML\nNull\n```\n\n##### Syntax\n\nHere's how you declare a variable in Enterprise™:\n\n```java\nvar Type name = value;;;\n```\n\n`Type` is one of the types above.\n\n`name` is any char sequence you want, as long as it doesn't exceed 8 chars.\n\n`value` is the initial value (among the valid ones for that Type) of your\nvariable. If a variable is not used, you may add the `unnecessary` flag to it.\n\nThe instructions must be ended with three semicolons (;;;). This a) adds clarity to where\nit ends, b) beats OCaml by 1 and c) makes your `;` key weathered over time, so it\nwill look like you work a lot.\n\nExamples:\n\n```java\nvar Money evaluatn = 10B;;;\nunnecessary var String name = 'Charles';;;\nunnecessary var Bool disruptv = True;;;\nunnecessary var Null salary = Null;;;\nunnecessary var List Money numbas = [10, 20];;;\nunnecessary var List String buzzws = ['viral', 'cloud', 'blockchain'];;;\nunnecessary var O1Type String mlnlUser = {name: 'XX JLo'};;;\nunnecessary var O1Type Money example = {balance: -7.5k, evaluation: 10B};;;\nunnecessary var XML String example = // TBD\n```\n\n##### Money\n\nIntegers and Floats are all numbers. And in Enterprise™ numbers are generally\nused to represent Money. So here are some nice things about it:\n\n```\nvar Money i = 0;;;\nvar Money i = 7;;;\nvar Money i = -7;;;\nvar Money i = 5.2;;;\n\n// one grand, who has time for typing so many zeros?\nvar Money i = 1k;;;\n\n// one million\nvar Money i = 1M;;;\n\n// easiest language to represent imaginary valuations\nvar Money i = 1B;;;\n\n// apple. the american debt. Enterprise™ represents all big numbers.\nvar Money i = 1T;;;\n```\n\n##### String\n\n// TBD\n\n##### List\n\n// TBD\n\n##### O1Type\n\nThe O1Type, commonly known as \"hash table\" in other languages, is named this way\nto simplify interviews. If you're asked:\n\n\u003e \"Which type could we use here to have a O(1) lookup?\"\n\nYou can simply say, with all your confidence:\n\n\u003e \"The ... O1 ... Type ...?\"\n\nNailed.\n\n##### XML\n\nXML stands for \"XML Markup Language\"\n\nStandard XML is cumbersome and can bring a lot of unnecessary complexity by over structuring your data.\n\nEnterprise™ is willing to enforce the best practices from the best in the business, which is why the only supported\nXML structure follows the Apple™ approach seen in .plist™ files, which uses an elegant yet powerful usage of XML\nas a straightforward implementation of the KeyValue™ design pattern™:\n\n```\n\u003ckey\u003esome key\u003c/key\u003e\n\u003cvalue\u003esome value\u003c/value\u003e\n\u003ckey\u003esome other key\u003c/key\u003e\n\u003cvalue\u003esome other value\u003c/value\u003e\n\u003ckey\u003eyet another key\u003c/key\u003e\n\u003cvalue\u003eyet another value\u003c/value\u003e  \n\u003ckey\u003eone more key\u003c/key\u003e\n\u003cvalue\u003eone more value\u003c/value\u003e \n``` \n\nIn the unlikely case where you have a really big number of keys and values (say, more than four-ish), it can go on:\n \n ```\n \u003ckey\u003esome unlikely key\u003c/key\u003e\n \u003cvalue\u003esome unlikely value\u003c/value\u003e\n \u003ckey\u003esome other unlikely key\u003c/key\u003e\n \u003cvalue\u003esome other unlikely value\u003c/value\u003e\n \u003ckey\u003eyet another unlikely key\u003c/key\u003e\n \u003cvalue\u003eyet another unlikely value\u003c/value\u003e  \n \u003ckey\u003eone more unlikely key\u003c/key\u003e\n \u003cvalue\u003eone more unlikely value\u003c/value\u003e \n ```\n\nMost often, however, you will use XML to define unnecessary values, but not necessarily necessary keys.\n\nIf you deem necessary to inform other developers about the unnecessaryness of your values, you'll use the\n`unnecessary=\"true\"` attribute.\n \nIn some exotic projects, or projects led by exotic architects, you might need keys that are not necessary, which you'll\ndecorate with the `necessary=\"false\"` attribute \n\nIt's worth mentioning that these attributes are available on your regular keys and values, AS WELL AS on the ones\ncreated in the unlikely cases where you have a really big number of keys and values (say, more than four-ish). \n\nHere is an example of the former case, and we'll leave it as an exercise for you to write an example of the latter:\n\n```\n\u003ckey necessary=\"false\"\u003esome key\u003c/key\u003e\n\u003cvalue unnecessary=\"true\"\u003esome value\u003c/value\u003e\n```\n\nOne drawback of XML is that it uses a ridiculously large number of angle brackets, which is a concern that will hopefully\nbe addressed in Enterprise2™\n\n### Chapter 5: operations\n\n##### Numeric operations\n\n```java\n\n2 + 3;;; // 5\n2 - 3;;; // -1\n2 * 3;;; // 6\n2 / 3;;; // 0.66666666 (see note below)\n3 % 2;;; // 1 (mod)\n\nvar Money i = 2;;;\ni += 1;;; // 3\ni -= 1;;; // 1\ni *= 1;;; // 2\ni /= 1;;; // 2 (see note below)\n\n2 \u003e 3;;; // False\n2 \u003c 3;;; // True\n2 == 3;;; // False\n2 != 3;;; // True\n```\n\nSince floats take too much time to implement properly, and it's more important\nto get Enterprise™ implementations out there, this guide will not dictate how\nfloat operations should behave. Therefore, as an example, all of these are fine:\n\n```java\n0.1 + 0.2 = 0.3\n0.1 + 0.2 = 0.30000000004\n0.1 + 0.2 = 0.00000000001\n0.1 + 0.2 = 0\n0.1 + 0.2 = 1\n0.1 + 0.2 = \"yes please\"\n ```\n\nAnything goes really, as long as you properly document the behaviour of your\nimplementation.\n\n##### String operations\n\nTemplates are too complicated, therefore Enterprise™ has only concat:\n\n```java\n'abc' + 'def';;; // 'abcdef'\n\nvar String myString = 'foo';;;\nmyString += 'bar';;; // 'foobar'\n```\n\n##### Bool operations\n\n```java\n!True;;; // False\n!False;;; // True\nTrue \u0026\u0026 True;;; // True\nTrue \u0026\u0026 False;;; // False\nFalse \u0026\u0026 False;;; // False\n```\n\nThat's it. If you did logic in your CS degree you must be able to do `or`s,\n`xors` and everything else based on these two. If you didn't, you'll probably\nnot need it anyway.\n\n##### List access\n\nLists start at index 1. You can easily access list items:\n\n```java\nvar List Money ns = [7, 8, 9];;;\nns[1];;; // 7\nns[2];;; // 8\nns[3];;; // 9\n```\n\n##### O1Type access\n\nYou can easily access o1Type items:\n\n```java\nvar O1Type Money grades = {john: 6, mary: 5};;;\ngrades['john'];;; // 6\ngrades['mary'];;; // 5\n```\n\n### Chapter 6: Disruptive libraries\n\nFor the sake of simplicity Enterprise™ doesn't have a standard lib. Instead\nyou'll include functionality using disruptive libraries – dl for short.\nThere is no package manager or way to create your own lib. This is for your\nown good. Enterprise™ guarantees the [quality](https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/)\nand [security](https://www.bleepingcomputer.com/news/security/52-percent-of-all-javascript-npm-packages-could-have-been-hacked-via-weak-credentials/) in all disruptive libraries. Check some examples:\n\n##### com.disruptive.string.manager.dlStringManager\n\n```java\nimport disruptive library com.disruptive.string.manager.dlStringManager;;;\n\nlength('hello');;; // 5\nsplit('hello');;; // ['h', 'e', 'l', 'l', 'o']\n```\n\nWith these 2 basic functions you can do anything. Substring? No problem:\n\n```java\nimport disruptive library com.disruptive.string.manager.dlStringManager;;;\nimport disruptive library com.disruptive.list.manager.dlListManager;;;\n\n// inside main of course\nvar String hello = '';;;\nvar String helloWor = 'Hello World';;;\nvar Money i = 0;;;\nunnecessary var Money j = 0;;;\n\nvar List String hWList = split(helloWor);;;\n// To avoid collision with dlStringManager.length\nwhile(i \u003c dlListManager.length(hWList)) {\n  // The +1 is necessary since lists start at index 1\n  hello += hWList[i + 1];;;\n  i++;;;\n}\n```\n\n##### com.disruptive.list.manager.dlListManager\n\n```java\nimport disruptive library com.disruptive.list.manager.dlListManager;;;\n\nlength(['a']);;; // 1\npush(['a'], 'b');;; // ['a', 'b']\n```\n\nThis should be enough. Concat? Easy:\n\n```java\nimport disruptive library com.disruptive.list.manager.dlListManager;;;\n\n// inside main of course\nvar List String chars1 = ['a', 'b'];;;\nvar List String chars2 = ['c', 'd'];;;\nvar Money i = 0;;;\n\nwhile(i \u003c length(chars2)) {\n  push(chars1, chars2[i + 1]);;;\n  i++;;;\n}\n```\n\n##### com.disruptive.o1type.manager.dlO1TypeManager\n\n```java\nimport disruptive library com.disruptive.o1type.manager.dlO1TypeManager;;;\n\nkeys({name: 'John'});;; // ['name']\nvalues({name: 'John'});;; // ['John']\n```\n\n### Chapter 7: Control structures\n\nTo avoid those pesky functional programmers to take over, Enterprise™ has no\niterators. No higher order whatever. No LGADBTS. You can do everything with\n`if`s and `while`s. As a wise Enterprise™ developer once said:\n\n\u003e \"You can do anything with any language.\"\n\n##### while\n\n```java\nwhile(condition) {\n  // code\n}\n```\n\n##### if\n\n```java\nif(condition) {\n  // code\n}\n```\n\n## Implementations\n\n* [Enterprise™ Web3.0™](https://github.com/joaomilho/Enterprise/tree/CEO/node) - Enterprise™ for the next generation web\n* [Enterprise™ rust edition X™](https://github.com/joaomilho/Enterprise/tree/CEO/rust) - Enterprise™: reliable, efficient and disruptive\n\n## Why learning Enterprise™?\n\n**Check the trends.**\n\n\u003cimg style=\"border: 1px solid #ccc;\" src=\"assets/growth.png\" width=\"180\" /\u003e \u003ca href=\"https://trends.google.com/trends/explore?date=all\u0026geo=US\u0026q=enterprise,java\" /\u003e\u003cimg style=\"border: 1px solid #ccc;\" src=\"assets/graph.png\" width=\"414\" /\u003e\u003c/a\u003e\nBye bye Java.\n\n**Check the opportunities.**\n\n[https://www.linkedin.com/jobs/search/?location=Worldwide\u0026keywords=Enterprise™ programming language](https://www.linkedin.com/jobs/search/?keywords=Enterprise%E2%84%A2%20programming%20language\u0026location=Worldwide)\n\n## DDD - The book\n\n\u003cimg src=\"assets/ddd.png\" width=\"150\" /\u003e\n\nThe book Disruption Driven Development – Mastering Enterprise™ – is in the\nmaking. Our sales website will be live soon!\n\n## Roadmap\n\n1. Automatic unnecessary classes generator.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoaomilho%2FEnterprise","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoaomilho%2FEnterprise","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoaomilho%2FEnterprise/lists"}