1C - Gut und Böse. Platzierung von Punkten in Holivars um 1C

Bild


Freunde und Kollegen, kürzlich über Habré-Artikel mit einem Hut gegen 1C als Plattform für Entwicklung, und die Reden ihrer Befürworter sind häufiger geworden. In diesen Artikeln wurde ein schwerwiegendes Problem hervorgehoben: In den meisten Fällen kritisieren 1C-Kritiker es aus der Perspektive, "es nicht gemeistert zu haben", kritisieren Probleme, die de facto leicht zu lösen sind, und im Gegenteil, ohne die wirklich wichtigen Probleme zu berühren, gibt es Diskussionen und werden vom Anbieter nicht gelöst . Ich halte es für sinnvoll, eine nüchterne und ausgewogene Überprüfung der 1C-Plattform durchzuführen. Was sie weiß wie, was sie nicht weiß, was sie tun soll, aber nicht tut, und was sie mit einem Paukenschlag tut, und Ihre Entwickler auf% technology_name% werden hundert Jahre lang wegwerfen mehr als ein Jahresbudget.


Auf diese Weise erhalten Sie als Leiter oder Architekt ein klares Verständnis - für welche Aufgabe es sich lohnt, 1C zu nehmen, und wo es mit einem heißen Eisen gebrannt werden sollte. Als Entwickler der "Nicht-1C" -Welt können Sie sehen, was es in 1C gibt, weil es so viel Aufhebens gibt. Und als 1C-Entwickler können Sie Ihr System mit Ökosystemen anderer Sprachen vergleichen und Ihren Standort im Koordinatensystem der Softwareentwicklung verstehen.


Under the cut - viele dicke Skizzen für 1C, für Kritiker 1C, für Java, .NET und allgemein ... Der Fan läuft, willkommen!


Über mich


Ich bin seit ungefähr 2004 mit dem Thema vertraut. Ich programmiere wahrscheinlich seit meinem sechsten Lebensjahr. Von dem Moment an, als ich ein Buch über Professor Fortran mit Comics über eine Katze, einen Spatz und eine Raupe bekam. Ich zerlegte die Programme, die die Katze aus den Bildern im Buch schrieb, und fand heraus, was sie taten. Und ja, ich hatte zu diesem Zeitpunkt keinen richtigen Computer, aber ich wurde auf die Seite gezeichnet und drückte ehrlich die Papierknöpfe, um die Befehle einzugeben, die von der Katze X ausspioniert wurden.


Dann gab es BK0011 und BASIC in der Schule, C ++ und Assembler an der Universität, dann 1C und dann so viel, dass es zu faul ist, sich zu erinnern. In den letzten 15 Jahren habe ich mich hauptsächlich mit 1C befasst, nicht nur im Hinblick auf die Codierung, sondern allgemein mit 1C. Hier Ziele setzen, administrieren und entwickeln. In den letzten 5 Jahren beschäftigte ich mich mit sozial nützlichen Aktivitäten in Bezug auf die Entwicklung von Entwicklungs- und Automatisierungstools für andere 1C-Spitznamen. Ich schreibe Artikel und Bücher.


Entscheide dich für das Thema der Diskussion


Lassen Sie uns zunächst entscheiden, was besprochen werden soll, da die Buchstaben "1C" viele Dinge verstehen können. In diesem Fall meinen wir mit den Buchstaben "1C" ausschließlich das Entwicklungsframework von "1C: Enterprise" der modernen, achten Version. Wir werden nicht viel über das produzierende Unternehmen und seine Politik sprechen (aber es wird ein bisschen sein müssen) .Wir werden keine spezifischen Anwendungen diskutieren, die unter Verwendung dieses Frameworks geschrieben wurden. Technologie separat, auch Konfigurationsanwendungen genannt - separat.


Übergeordnete Architektur 1C: Enterprise


Ich erwähne wissentlich das Wort "Rahmen". Aus Sicht des Entwicklers ist die 1C-Plattform genau das Framework. Und Sie müssen es wie einen Rahmen behandeln. Betrachten Sie es als Spring oder ASP.NET, die von einer bestimmten Laufzeit ausgeführt werden (JVM bzw. CLR). In der Welt der konventionellen Programmierung („nicht 1C“) ist die Aufteilung in Frameworks, virtuelle Maschinen und spezifische Anwendungen eine Selbstverständlichkeit, da diese Komponenten in der Regel von verschiedenen Herstellern entwickelt werden. In der Welt von 1C ist es nicht üblich, ein Entwicklungsframework und tatsächlich eine Laufzeit explizit zuzuweisen. Darüber hinaus werden bestimmte Anwendungen, die mit dem Framework geschrieben wurden, grundsätzlich auch von 1C selbst entwickelt. Infolgedessen entsteht eine gewisse Verwirrung. Daher müssen wir im Rahmen des Artikels 1C von mehreren Seiten gleichzeitig betrachten und nach mehreren Koordinatenachsen klassifizieren. Und in jeder Koordinatenachse wir Setzen Sie eine Schaufel brauner Substanz Berücksichtigen Sie die Merkmale, Vor- und Nachteile der vorhandenen Lösung.


1C Standpunkte


1C für den Käufer


Der Käufer erwirbt ein Automatisierungssystem, mit dem er die Probleme der Automatisierung seines eigenen Geschäfts schnell lösen kann. Ein Unternehmen kann ein kleiner Stand oder ein großer Betrieb sein. Es ist klar, dass die Anforderungen dieser Unternehmen unterschiedlich sind, aber beide von einer einzigen Codebasis der Plattform unterstützt werden.


Für den Käufer bedeutet 1C eine schnelle Markteinführung. Schnell. Schneller als Java, C # oder JS. Im mittleren. Im Krankenhaus. Es ist klar, dass die Visitenkarten-Website auf der Reaktion besser wird, aber das Backend des WMS-Systems wird auf 1C schneller starten.


1C als Werkzeug


Jede technologische Lösung hat Grenzen der Anwendbarkeit. 1C ist keine Allzwecksprache, sie lebt nicht getrennt von ihrem Rahmen. 1C empfiehlt sich, wenn Sie Folgendes benötigen:


  • Server-Anwendung
  • Finanzierungsantrag
  • Mit fertiger Benutzeroberfläche, ORM, Berichterstellung, XML / JSON / COM / PDF / YourDataTransferingFormat
  • mit Unterstützung für Hintergrundprozesse und Jobs
  • mit rollenbasierter Sicherheit
  • mit skriptfähiger Geschäftslogik
  • mit schnellem Prototyp und geringer Time-to-Market

1C brauchen Sie nicht, wenn Sie wollen:


  • maschinelles Lernen
  • GPU-Berechnungen
  • Computergrafik
  • mathematische Berechnungen
  • CAD-System
  • Signalverarbeitung (Ton, Video)
  • Highload-HTTP-Aufrufe mit Hunderttausenden von RPS

1C als produzierendes Unternehmen


Es lohnt sich zu verstehen, was das Geschäft von 1C als Softwarehersteller ist. 1C verkauft Lösungen für geschäftliche Probleme durch Automatisierung. Ein anderes Geschäft, groß oder klein, aber es verkauft genau das. Die Mittel, um dies zu erreichen, sind Geschäftsanwendungen. Für die Buchhaltung, Gehaltsabrechnung usw. Zum Schreiben dieser Anwendungen verwendet das Unternehmen eine eigene Plattform für die Entwicklung von Geschäftsanwendungen. Speziell auf die gemeinsamen Aufgaben dieser Geschäftsanwendungen zugeschnitten:


  • Finanzbuchhaltung
  • Einfache Anpassung der Geschäftslogik
  • Breite Integrationsmöglichkeiten in heterogenen IT-Landschaften

Als Hersteller glaubt 1C, dass dies die Strategie ist, mit der Sie mit Partnern und Kunden im Win-Win-Modus arbeiten können. Sie können damit argumentieren, aber in etwa wirbt das Unternehmen für sich selbst: vorgefertigte Lösungen für geschäftliche Probleme, die von Partnern schnell angepasst und in jede IT-Landschaft integriert werden können.


Alle Ansprüche oder Wunschliste für 1C als Rahmen sollten ausschließlich durch dieses Prisma betrachtet werden. "Wir wollen OOP in 1C", sagen Entwickler. "Wie viel kostet es, OOP auf der Plattform zu unterstützen, hilft es uns, den Verkauf von Kartons zu steigern?", Sagt 1C. Öffnet sein "Prisma" für den Verkauf von Geschäftslösungen:


"Hey Geschäft, willst du OOP in deinem 1C?"
"Wird es mir helfen, meine Probleme zu lösen?"
- Woher wissen ...
- Dann nicht nötig


Dieser Ansatz kann gut oder schlecht sein, je nachdem, wer ihn ansieht, aber genau das ist es. Wenn Sie über die Tatsache sprechen, dass es in 1C kein Merkmal X gibt, müssen Sie verstehen, dass es nicht aus einem Grund vorhanden ist, sondern im Zusammenhang mit der Wahl von "Implementierungskosten im Vergleich zur Gewinngröße".


Technologische Einstufung


"In der Tat verwenden Odnosniks die besten Muster, die sorgfältig von fürsorglichen Methodikern und Entwicklern der 1C-Plattform ausgewählt wurden.
Wenn Sie Ihren dummen Code für eine einfache, verwaltbare Form schreiben, verwenden Sie tatsächlich Model-View-Controller mit doppelter Datenbindung in einer dreischichtigen Daten-App-Engine , die mit einer übergeordneten Objektbeziehungszuordnung auf Basis deklarativer Metadaten ausgestattet ist description verfügt über eine eigene plattformunabhängige Abfragesprache mit deklarativer datengesteuerter Benutzeroberfläche, vollständiger transparenter Serialisierung und domänenorientierter Programmiersprache .

Wie sich 1C-Entwickler von ihren westlichen Kollegen unterscheiden, zeigt sich in der PR. Sie geben jedem Bullshit gerne einen großen Namen und stürzen sich darauf wie auf einen schriftlichen Sack. "
A. Orefkov

Die 1C-Plattform verfügt über eine klassische 3-Tier-Architektur, in deren Zentrum sich ein Anwendungsserver befindet (oder dessen Emulation für wenig Geld für kleine Ladenbesitzer). Als DBMS wird entweder MS SQL oder Postgres verwendet. Es gibt auch Unterstützung für Oracle und IBM DB2, aber dies ist eher eine Esoterik. Niemand weiß, was passieren wird, wenn Sie 1C auf diesen Basen unter mittlerer und hoher Last implementieren. Ich glaube, dass 1C selbst das auch nicht weiß.


Der Client-Teil ist entweder ein Thin Client, der auf dem Computer des Benutzers installiert ist, oder ein Web-Client. Das Hauptmerkmal ist, dass Programmierer nicht zwei verschiedene Codes schreiben, sondern nur eine Anwendung in einer Sprache, und dass Sie diese bei Bedarf im Browser einstellen können. Wer wollte einen authentischen vollständigen Stack und eine einzige Sprache für das Front-End und das Back-End, node.js? Sie haben es nicht geschafft, genau dasselbe bis zum Ende zu tun. Ein echter voller Stack existiert, aber Sie müssen in 1C schreiben. Ironie des Schicksals, solche Dinge :)


Im Browsermodus funktioniert auch die 1C: Fresh Cloud SaaS-Lösung, bei der Sie nicht 1C kaufen, sondern eine kleine Basis mieten und dort die Verkäufe von Dönern protokollieren können. Einfach im Browser, ohne etwas für sich selbst zu installieren oder zu konfigurieren.


Darüber hinaus gibt es einen Legacy-Client, der in 1C als "reguläre Anwendung" bezeichnet wird. Legacy, es ist Legacy, willkommen in der Welt der Anwendungen im Jahr 2002, aber wir sprechen immer noch über den aktuellen Zustand des Ökosystems.


Die Serverseite 1C unterstützt Clustering und Skalierung, indem dem Cluster neue Computer hinzugefügt werden. Hier sind etliche Exemplare kaputt, und dazu wird es einen eigenen Abschnitt im Artikel geben. Kurz gesagt, dies ist nicht ganz dasselbe wie das Hinzufügen von genau denselben Instanzen hinter HAProxy.


Das Anwendungsentwicklungsframework verwendet eine eigene Programmiersprache, die in etwa einer ins Russische übersetzten, leicht verbesserten VB6 ähnelt. Menschen hasse alles russisch Wer glaubt nicht, dass "wenn" als "wenn" übersetzt wird, wird eine zweite Syntax vorgeschlagen. Das heißt Auf Wunsch kann 1C so geschrieben werden, dass es sich optisch nicht von VB unterscheidet.


Bild


Diese Programmiersprache ist der Hauptgrund für den Ruf des 1C-Spitznamens gegenüber seiner Plattform. Ehrlich gesagt, nicht ohne Grund. Die Sprache wurde so einfach wie möglich konzipiert, um das Mantra "DEVELOPERS, DEVELOPERS" zumindest im GUS-Maßstab zu erfüllen. Das kommerzielle Wesen einer solchen Lösung ist meiner Meinung nach klar erkennbar: mehr Entwickler, mehr Marktabdeckung. Dies hat sich nach verschiedenen Schätzungen von 45% auf 95% bewahrheitet. Ich muss sofort sagen, dass das Schreiben in der Sprache, in der Sie denken, wirklich einfacher ist. Und ich kenne ziemlich viele Programmiersprachen.


Wir beginnen mit der Sprache.


1C Programmiersprache


Gleichzeitig die Stärken und Schwächen des Systems. Bietet einfache Eingabe, Lesbarkeit. Andererseits wurde es seit der Veröffentlichung von Version 8 im Jahr 2002 nicht mehr aktualisiert und ist veraltet. Jemand wird sagen "der Hauptfehler - es gibt kein OOP" und es wird falsch sein. Erstens mag die PLO nicht nur Nuraliev, sondern auch Torvalds. Und zweitens existiert OOP immer noch.


Aus Sicht des Entwicklers verfügt er über ein Framework mit den im DBMS angezeigten Basisklassen. Der Entwickler kann die Basisklasse "Directory" nehmen und daraus das Verzeichnis "Clients" erben. Es kann neue Klassenfelder hinzufügen, z. B. TIN und Adresse, und bei Bedarf die Methoden der Basisklasse überschreiben, z. B. die OnWrite / Prizapisi-Methode.


Das Framework ist so konzipiert, dass eine tiefere Vererbung selten erforderlich ist, und die Einschränkung in OOP ist meiner Meinung nach sinnvoll. 1C konzentriert sich auf die domänengetriebene Entwicklung und lässt Sie zuallererst über den Themenbereich der zu entwickelnden Lösung nachdenken, und das ist gut so. Es ist nicht nur die Versuchung, sondern auch die Notwendigkeit, 10 verschiedene DTO- und ViewModel-Dateien zu schreiben, um irgendwo Daten aus der Domain anzuzeigen. Der 1C-Entwickler arbeitet immer mit einer Entität, ohne den Wahrnehmungskontext durch Dutzende von Klassen mit ähnlichen Namen zu beeinträchtigen, die dieselbe Entität darstellen, jedoch von der anderen Seite. Jede .NET-Anwendung zum Beispiel enthält zwangsläufig fünf oder zwei ViewModel- und DTO-Dateien für die Serialisierung in JSON und die Übertragung von Daten vom Client zum Server. Ungefähr 10-15% des Codes in Ihrer Anwendung werden mit Stiften oder Krücken wie AutoMapper Daten von einer Klasse in eine andere verschieben. Dieser Code muss geschrieben werden und Programmierer müssen für die Erstellung und Wartung bezahlen.


Es stellt sich heraus, dass die 1C-Sprache nur schwer zu entwickeln ist, ohne das Niveau der Hauptsprachen zu erreichen, wodurch der Vorteil der Einfachheit verloren geht. Was in der Tat die Aufgabe des Anbieters ist, ist die Herausgabe einer Standardlösung, die von jedem Studenten, der auf der Straße ist, mit der richtigen Qualität angepasst werden kann (d. H. Die Abdeckung vom Stand bis zur großen Fabrik wird durchgeführt). Wenn Sie ein Stand sind - nehmen Sie einen Studenten, wenn Sie eine Fabrik sind - nehmen Sie einen Guru von einem Implementierungspartner. Die Tatsache, dass Implementierungspartner Schüler zum Preis eines Gurus verkaufen, ist kein Rahmenproblem. Architektonisch sollte das Framework die Probleme beider lösen, der Code typischer Konfigurationen (den wir mit dem Versprechen der Anpassung an das Unternehmen verkauft haben) sollte vom Studenten verstanden werden, und der Guru wird verstehen, was Sie wollen.


Was meiner Meinung nach wirklich an der Sprache fehlt, was mich zwingt, mehr zu schreiben, als ich könnte, verbrennt die vom Kunden bezahlte Zeit.


  • Die Möglichkeit des Tippens auf der Ebene von beispielsweise TypeScript (als Ergebnis weiterentwickelte Mittel zur Code-Analyse in der IDE, Refactoring, weniger anstößige Pfosten)
    Das Vorhandensein von Funktionen als Objekte der ersten Klasse. Ein etwas komplexeres Konzept, aber die Anzahl der Boilerplate-Codes gegenüber den Standard-Codes könnte erheblich reduziert werden. Das Verständnis des Codes durch einen Studenten, IMHO, würde sich aufgrund der Volumenreduzierung sogar erhöhen
  • Literale von Universalsammlungen, Initialisierer. Das Gleiche - Reduzierung der Menge an Code, die mit den Augen geschrieben und / oder betrachtet werden muss. Das Befüllen von Sammlungen macht über 9000% der Programmierzeit von 1C aus. Das Schreiben ohne syntaktischen Zucker ist langwierig, teuer und fehleranfällig. Im Allgemeinen überschreitet die Anzahl der LOCs in 1C-Lösungen alle denkbaren Grenzen im Vergleich zu den verfügbaren offenen Frameworks und im Allgemeinen zu Ihrem gesamten Unternehmen Java zusammen. Die Sprache ist wortreich und degeneriert in Datenvolumen, Speicher, IDE-Bremsen, Zeit, Geld ...
  • endlich Konstruktionen Ich habe die Hypothese, dass diese Konstruktion fehlt, weil keine erfolgreiche Übersetzung ins Russische gefunden wurde :)
  • Eigene Datentypen (ohne OOP), Typanaloge aus VB6. Ermöglicht es Ihnen, Strukturen nicht mithilfe von Kommentaren im BSP und den magischen Methoden zu typisieren, mit denen diese Strukturen erstellt werden. Wir erhalten: weniger Code, einen Hinweis auf den Punkt, eine schnellere Lösung des Problems, weniger Tippfehler und fehlende Struktureigenschaften. Die Typisierung der Benutzerstrukturen liegt nun vollständig beim Entwicklerteam der Library of Standard Subsystems, das meines Erachtens die erwarteten Eigenschaften der übergebenen Parameterstrukturen sorgfältig kommentiert.
  • Zuckermangel bei der Arbeit mit asynchronen Aufrufen auf dem Web-Client. Eine Callback-Hölle in Form von Alert-Verarbeitung ist eine vorübergehende Unterbrechung, die durch eine plötzliche Änderung der API der Hauptbrowser verursacht wird. Sie können jedoch nicht die ganze Zeit so leben. Fügen Sie hier in der Haupt-IDE jegliche Unterstützung für dieses Paradigma hinzu, und es wird schlimmer.

Dies ist ein dringendes Problem, es ist klar, dass die Liste viel größer sein kann, aber man sollte nicht vergessen, dass es sich immer noch nicht um eine universelle Sprache handelt, Multithreading, Lambda-Funktionen, Zugriff auf die GPU und schnelle Gleitkommaberechnungen sind nicht erforderlich. Dies ist eine Skriptsprache für Geschäftslogik.


Ein Programmierer, der viel mit dieser Sprache gearbeitet hat, hat sich mit js oder c # befasst, langweilt sich mit der Sprache. Das ist eine Tatsache. Er braucht Entwicklung. Auf der anderen Seite hat der Anbieter die Kosten für den Verkauf dieser Funktionen im Vergleich zum Umsatzanstieg nach deren Implementierung. Hier habe ich keine Informationen darüber, was in den Augen des Unternehmens derzeit überwogen wird.


Entwicklungsumgebung


Auch hier ist nicht alles glatt. Es gibt zwei Entwicklungsumgebungen. Der erste ist der im Lieferumfang enthaltene Konfigurator. Die zweite ist die Enterprise Development Tools-Umgebung, die auf der Basis von Eclipse, kurz EDT, entwickelt wurde.


Der Konfigurator bietet eine breite Palette von Entwicklungsaufgaben, unterstützt alle Funktionen und ist die Hauptumgebung auf dem Markt. Es ist auch moralisch veraltet, entwickelt sich Gerüchten zufolge nicht - aufgrund des Volumens der technischen Schulden in sich. Die Öffnung der internen API könnte die Situation verbessern (in Form einer Freundschaft mit Snegopat A. Orefkov oder auf unabhängiger Basis), aber dies ist nicht der Fall. Die Praxis hat gezeigt, dass die Community selbst ein Feature in der IDE ablegen wird, wenn sich nur der Anbieter nicht einmischt. Aber wir haben was wir haben. Der Konfigurator war von 2004 bis 2005 wunderschön, er war dem damaligen Visual Studio sehr ähnlich, an manchen Stellen war er sogar noch cooler, aber er blieb in diesen Zeiten hängen.


Außerdem ist das Volumen der durchschnittlichen Standardlösung seitdem um ein Vielfaches gewachsen, und heute kommt die IDE dummerweise nicht mehr mit der Menge des eingespeisten Codes zurecht. Usability- und Refactoring-Funktionen liegen nicht einmal bei Null, sie schreiben rote Zahlen. All dies begeistert die Entwickler nicht und sie träumen davon, es in andere Ökosysteme zu werfen und dort weiter zu scheißen, aber in einer angenehmen Umgebung, die seinem Verhalten nicht ins Gesicht spuckt.


Als Alternative wird eine von Grund auf neu geschriebene Eclipse-basierte IDE vorgeschlagen. Dort werden die Quellen, wie in jeder anderen Software, in Form von Textdateien gespeichert und in GIT-, Pull-Request-Zweigen abgelegt. Von den Minuspunkten - seit vielen Jahren hat es den Beta-Status nicht verlassen, obwohl mit jeder Veröffentlichung alles besser wird. Ich werde nicht über die Nachteile von EDT schreiben. Das ist heute ein Minuspunkt, morgen ein fester Punkt. Die Relevanz einer solchen Beschreibung wird schnell verblassen. Heutzutage ist es möglich, in EDT zu entwickeln, aber ungewöhnlich, müssen Sie auf eine Reihe von IDE-Fehlern vorbereitet sein.


Wenn Sie sich die Situation anhand des erwähnten „1C-Prismas“ ansehen, erhalten Sie Folgendes: Die Veröffentlichung der neuen IDE erhöht nicht den Verkauf von Boxen, aber der Abfluss von ENTWICKLERN kann reduziert werden. Es ist schwer zu sagen, was das Ökosystem vom Standpunkt des Entwicklerkomforts erwartet, aber Microsoft hat die Entwickler von Mobilgeräten bereits einmal profiliert, indem es ihnen ihre Dienste zu spät anbot.


Entwicklungsmanagement


, , , , , 1 git, blame, code-review, , etc. , . , , , . -, KDiff- . gitconverter , , , gitsync , -. open-source 1 . API , , IDE.


, 1 git Jira, Crucible, Allure 1 SonarQube — , , , 1.



. -, , - ( 1). , , , , — highload — , " ". , , 1 - . , , . .


, . , 1: , , . , , ELK , , — . . , 1 — . , . , , , 1- , , . SAP. , , , - . . SAP . - 1 , . Das ist ein Irrtum.


1


— . , , . . — , . 1 , — . , , 1 — , .. . , , , , .


, 1 , , .


Docker


1 . , , highload — . , +1 . , , .



— 1 - . 1 Reporting, , -, , , , .. , , . , UI , , .
1, , , , .


, PDF . .NET , . , . , PDF. , . - , , dto- JSON, , , , — PDF. 1, , .


- / 3. , , , , - . , , 3 , .


.NET visual studio ? ? Das ist das selbe


1,


1 - . , . , 1. . , , . -, , — . :


  1. Unicode. , , ? 2019 ASCII ( legacy). . . - - varchar . 2015 gitlab LDAP- - , JetBrains IDE . 1 . . , , . , - . Java- . . ? .
  2. /. 1 . — . identity ( ", "), , , ( ). , , , — , , , .
  3. . 1 — . . - identity ( !), GUI, ( ). ? ?
  4. . 1 () . — ! , : ( ), . , . , — , .
  5. . , - . . — . : , .
  6. . , . , -, , , — . ( UI) — .
  7. Reporting. BI- ETL-. , . , , .. 1 , , . , . -- , --. : reporting, , , .
  8. . - .NET PDF . . PDF? 1- PDF +1 . + 40 , . 1 , . , , 1 , 3D OpenGL. ?

All dies sind nur einige Beispiele, bei denen die Einschränkung der Funktionalität oder die Implementierung mit Kompromissen ein wichtiger architektonischer Vorteil für die Zukunft ist. Auch ein Kompromiss oder nicht die effektivste Option - es ist bereits in der Box und wird als selbstverständlich vorausgesetzt. Die unabhängige Implementierung wird entweder unmöglich sein (weil solche Entscheidungen zu Beginn des Projekts getroffen werden müssen und nicht vorher, und es gibt überhaupt keinen Architekten) oder mehrere teure Iterationen. In jedem dieser Elemente (und dies ist keine vollständige Liste der Architekturlösungen) können Sie Einschränkungen vornehmen und festlegen, die die Skalierung blockieren. In jedem Fall müssen Sie als Geschäftsmann sicherstellen, dass Ihre Programmierer, die ein "System von Grund auf neu" erstellen, gerade Arme haben und sofort gute Systemmomente ausführen.


Ja, wie in jedem anderen komplexen System bietet 1C selbst Lösungen, die die Skalierung auf die eine oder andere Weise blockieren. Ich wiederhole jedoch, durch die Kombination von Faktoren, durch die Betriebskosten, durch die Anzahl der Probleme, die bereits im Voraus gelöst wurden - ich sehe keinen würdigen Konkurrenten auf dem Markt. Für den gleichen Preis erhalten Sie ein Framework für Finanzanwendungen, einen Server mit Clusterausgleich, eine Benutzeroberfläche und eine Web-Oberfläche, eine mobile Anwendung, Berichterstellung, Integration und vieles mehr. In der Java-Welt stellen Sie ein Front-End- und Back-End-Team ein, debuggen Jambs mit selbst geschriebenem Servercode auf niedriger Ebene und zahlen für 2 Mobilanwendungen für 2 Mobilbetriebssysteme separat.


Ich sage nicht, dass 1C alle Fälle lösen wird, aber für eine interne Unternehmensanwendung, wenn Sie keine Branding-Benutzeroberfläche benötigen, was wird sonst noch benötigt?


Fliege in der Salbe


Wahrscheinlich wird 1C die Welt retten, und alle anderen Schreibweisen für Unternehmenssysteme sind falsch. Das ist überhaupt nicht wahr. Wenn Sie sich aus Sicht eines Unternehmers für 1C entscheiden, müssen Sie zusätzlich zu einer schnellen Markteinführung die folgenden Nachteile berücksichtigen:


  • Serverzuverlässigkeit Es erfordert wirklich hochqualifizierte Spezialisten, die in der Lage sind, einen reibungslosen Betrieb zu gewährleisten. Ich kenne das fertige Trainingsprogramm für solche Spezialisten vom Anbieter nicht. Es gibt Kurse zur Vorbereitung auf das Bestehen der Prüfung "Experte", aber dies ist meiner Meinung nach nicht genug.
  • Unterstützung. Siehe den vorherigen Absatz. Um Unterstützung vom Anbieter zu erhalten, müssen Sie diese kaufen. Aus irgendeinem Grund wird dies in der 1C-Industrie nicht akzeptiert. Und mit SAP ist es fast notwendig, etwas zu kaufen, und es stört niemanden. Ohne Unternehmensunterstützung und ohne einen Experten für den Staat - mit 1C Pannen können Sie eins zu eins bleiben.
  • Auf 1C können Sie jedoch überhaupt nichts tun. Dies ist ein Werkzeug und hat wie jedes Werkzeug Grenzen der Anwendbarkeit. In einer Landschaft mit 1C ist es sehr wünschenswert, einen Systemarchitekten zu haben, der nicht "1C-nut" ist.
  • Gute 1C-Spitznamen sind in anderen Sprachen nicht billiger als gute Programmierer. Ungeachtet der Sprache, die sie schreiben, sind schlechte Programmierer teuer in der Einstellung.

Lass uns punkten


  • 1C ist ein Framework für Rapid Application Development (RAD) für Unternehmen und ist darauf zugeschnitten.
  • Drei-Link mit Unterstützung für das Haupt-DBMS, Client-Benutzeroberfläche, recht gutem ORM und Berichterstellung
  • Viele Möglichkeiten zur Integration in Systeme, die das können, was 1C nicht kann. Wenn Sie maschinelles Lernen möchten, holen Sie sich Python und führen Sie das Ergebnis über http oder RabbitMQ in 1C zusammen
  • Streben Sie nicht danach, alles in 1C zu tun, sondern müssen Sie seine Stärken verstehen und für Ihre eigenen Zwecke nutzen
  • Entwickler, die dazu neigen, sich mit technischen Frameworks-Gadgets zu beschäftigen und alle N Jahre an einer neuen Engine zu arbeiten, langweilen sich in 1C. Dort ist alles sehr konservativ.
  • Die Entwickler langweilen sich, weil sie vom Hersteller nur sehr wenig beachtet werden. Langweilige Sprache, schwache IDE. Sie erfordern eine Modernisierung.
  • Andererseits sind Entwickler, die durch die Anwendung und das Studium anderer Technologien, die sie mögen, keine Belustigung finden, schlechte Entwickler. Sie werden jammern und in ein anderes Ökosystem gehen.
  • Arbeitgeber, die ihren 1C-Spitznamen nicht erlauben, etwas in Python zu würgen, sind schlechte Arbeitgeber. Sie werden Mitarbeiter mit fragendem Verstand verlieren und Affen-Programmierer werden an ihre Stelle treten, die, mit allem einverstanden, Unternehmenssoftware in den Sumpf ziehen werden. Sie müssen es noch umschreiben, vielleicht ist es besser, etwas früher in Python zu investieren?
  • 1C ist ein kommerzielles Unternehmen und implementiert Funktionen ausschließlich auf der Grundlage seiner eigenen Interessen und Zweckmäßigkeit. Sie kann nicht dafür verantwortlich gemacht werden, ein Unternehmen muss über Profit nachdenken, so ist das Leben
  • 1C verdient Geld mit dem Verkauf von Lösungen für geschäftliche Probleme, nicht mit den Entwicklerproblemen von Vasya. Diese beiden Konzepte korrelieren, aber die Priorität ist genau die, die ich gesagt habe. Wenn der Entwickler Vasya bereit ist, eine persönliche Lizenz für 1C: Resharper zu bezahlen, erscheint er ziemlich schnell, "Resharper" A. Orefkova bestätigt dies. Wenn der Verkäufer ihn unterstützen würde, aber nicht mit ihm streiten würde, gäbe es einen Softwaremarkt für Entwickler. Jetzt gibt es anderthalb Spieler auf diesem Markt mit zweifelhaften Ergebnissen, und das alles, weil die Integration in die IDE negativ ist und alles auf Krücken gemacht wird.
  • Die Praxis eines Multi-Tool-Spezialisten wird in Vergessenheit geraten. Moderne Anwendungen sind zu umfangreich, um sie von der Seite des Codes und von der Seite des Geschäftsgebrauchs zu merken. Server 1C wird auch immer komplizierter, es wird nicht möglich sein, alle Arten von Fachwissen in einem Mitarbeiter zu behalten. Dies sollte den Bedarf an Fachkräften mit sich bringen, was die Attraktivität des 1C-Berufs und eine Erhöhung der Gehälter bedeutet. Wenn Vasya zuvor drei-in-eins für ein Gehalt gearbeitet hat, müssen jetzt zwei Vasya eingestellt werden, und die Konkurrenz unter Vasya kann das allgemeine Wachstum ihres Niveaus ankurbeln.

Fazit


1C ist ein sehr würdiges Produkt. In meiner Preisklasse kenne ich überhaupt keine Analoga, schreibe in die Kommentare, wenn es welche gibt. Der Abfluss von Entwicklern aus dem Ökosystem macht sich jedoch zunehmend bemerkbar, und dies ist ohnehin ein "Brain Drain". Die Branche ist auf Modernisierung bedacht.
Wenn Sie ein Entwickler sind, gehen Sie in 1C nicht in Zyklen und denken Sie nicht, dass in anderen Sprachen alles magisch ist. Während du Juni bist - vielleicht. Sobald Sie etwas Größeres lösen müssen, müssen Sie länger nach vorgefertigten Lösungen suchen und diese intensiver bearbeiten. Durch die Qualität der "Würfel", aus denen Sie eine Lösung bauen können, ist 1C sehr, sehr gut.


Und doch - wenn Sie gekommen sind, um 1C-Spitznamen einzustellen, können Sie 1C-Spitznamen sicher an die Lead-Analysten weitergeben. Verständnis für die Aufgabe, das Fachgebiet, die Zerlegungsfähigkeiten, die sie perfekt entwickelt haben. Ich bin sicher, dass dies genau auf den erzwungenen Einsatz von DDD in der 1C-Entwicklung zurückzuführen ist. Eine Person wird geschult, zunächst über die Bedeutung der Aufgabe nachzudenken, über die Zusammenhänge zwischen Objekten des Fachgebiets und verfügt über einen technischen Hintergrund zu Integrationstechnologien und Datenaustauschformaten.


Sei dir bewusst, dass der ideale Rahmen nicht existiert und pass auf dich auf.
Gut zu allen!


PS: Vielen Dank, Speshuric, für die Hilfe bei diesem Artikel.

Source: https://habr.com/ru/post/de480658/


All Articles