Click here to send us your inquires or call (852) 36130518

HISTOIRE DES LANGAGES INFORMATIQUE

�2002 Jean Bellec

Retour histoire informatique

version partielle provisoire
noter que les hyperliens mentionnent des pages encore en construction, et que leur existence ne fait que refl�ter l'avancement de cette version partielle et peut-�tre partiale de l'histoire informatique.

La programmation des machines comme l'ASCC (Harvard MkI) ou les premi�res machines de gestion fut une op�ration de c�blage, � la mani�re des automates industriels. IBM, Univac et Bull avaient d�velopp� le concept de tableau de connexion amovible qui avait l'avantage de ne pas immobiliser le syst�me pendant le d�veloppement d'un programme particulier. Ensuite, ces constructeurs invent�rent un concept de tableau secondaire pour garder des morceaux de programme partag�s, un pr�d�cesseur des sous programmes en quelque sorte. Ces tableaux de connexion rest�rent le moyen de programmer les machines jusque vers 1955, moment o� les ordinateurs � programme enregistr� sortirent des laboratoires.

La programmation par panneaux de connexions garda des traces dans le milieu des programmeurs d'applications de gestion o� le concept de proc�dures avait du mal � p�n�trer. Aussi, naquirent les Gestions Automatiques de Programme (nom donn� par IBM France au Report Program Generator -RPG-) introduit sur les premiers petits ordinateurs de gestion et dont la derni�re version RPG3 fut le langage principal de programmation du System 38 et de l'AS/400.
Je pense qu'on retrouve une trace de cette approche dans les tableurs (Visicalc, Multiplan et autres Excel) qui sont devenus le principal usage programmatique sur les micro-ordinateurs.

 

Les machines � programme enregistr� d�rivent des concepts de von Neumann au d�but des ann�es 1950. La caract�ristique principale de ces machines qui restait contest�e dans les ann�es 1960, mais s'imposa au moins partiellement par la suite, �tait de banaliser la m�moire principale -m�moire � tores ou tambour- entre donn�es et programmes et de laisser envisager l'auto modification des programmes. L'usage de cette auto modification pouvait �tre un gain de place en r�utilisant comme constantes certaines parties du programme -source de p�nibles mises au point au d�but des ann�es 1960,, ce pouvait aussi l'amorce d'une intelligence artificielle o� le programme savait s'adapter aux p�rip�ties du calcul. En pratique, la principale utilisation de la banalisation de la m�moire a �t� la programmation automatique, c'est � dire, la fabrication d'un programme � partir d'un langage de programmation au moyen d'un autre programme qu'on appellera, probablement abusivement, un compilateur. L'abus de ce mot �tait peut-�tre que la fonction de traducteur de langage �tait compl�ment� par la r�union de sous-programmes ou de macro-instructions.

Cette vision de la programmation automatique s'est � peu pr�s impos�e au d�but des ann�es 1960 (et dure encore de nos jours), il ne faut pas ignorer qu'une autre solution avait �t� �labor�e aussi � peu pr�s simultan�ment, celle de l'interpr�tation d'un langage de haut niveau. Le concept d'interpr�teur avait �t� utilis� par Wilkes en Grande Bretagne puis par IBM (S/360) et Bull (M-40 et Gamma 55) pour ex�cuter un code puissant et complexe au moyen d'une machine plus frustre et meilleur march�. Les microprogrammes de ces machines repr�sentaient un interpr�teur. Cette solution d'interpr�teur perdurera dans des machines surtout utilis�es interactivement, comme le syst�me BASIC de Dartmouth et GE ou le PAF de Dimitri Starynkevitch la CAB500 de SEA en France. 
BASIC fut d�velopp� par John Kemeny et Thomas Kurtz � Dartmouth. Sa diffusion sur le time-sharing de General Electric le popularisa durant les ann�es 1970 et ce langage fut diffus� dans divers dialectes et �tendu vers le graphique et le multim�dia sur les premi�res g�n�rations de microordinateurs. C'est en �crivant un processeur BASIC pour Altair que Bill Gates commen�a son ascension et cr�a Microsoft.
En fait ces interpr�teurs utilis�rent tr�s vite une solution interm�diaire avec les compilateurs: celle d'un parser qui transformait le code source en code interm�diaire et l'interpr�teur proprement dit. On aura reconnu les solutions du P-code et des premi�res versions de Java.

Les premi�res �bauches de langages et de compilateurs se heurtaient � deux probl�mes cruciaux � cette �poque de puissance de calcul rare et ch�re: l'encombrement accru des programmes et la lenteur d'ex�cution. La comparaison avec un simple Autocode o� � chaque instruction de code source correspondait une instruction machine �tait notablement en d�faveur des langages et surtout des langages qui se voulaient ind�pendants de la machine sous-jacente. Le traducteur de langage Autocode fut appel� l'Assembleur. Ce n'est pas un hasard si la d�finition par John Backus de FORTRAN, dont la version intiale date de 1954, �tait inspir�e par le code d'instructions de l'IBM 704. FORTRAN continua son �volution jusqu'� nos jours avec le FORTRAN II, en 1957 qui l'�tablit comme langage standrad scientifique, FORTRAN IV en 1962, Fortran 77 normail� en avril 1978, puis Fortran 90 en 1991.
A cette exception pr�s, les constructeurs de machine laiss�rent � de comit�s de normalisation peupl�s de leurs scientistes et par des universitaires la d�finition en 1958 du langage ALGOL. Les concepts de ALGOL furent sensiblement innovants, ils ignoraient les particularit�s des registres pour faire les calculs sur des variables en m�moire, ils admettaient la possibilit� de r�cursivit� des proc�dures, ils standardisaient une structure de blocs lexicographiques. Certains constructeurs d�cid�rent de construire leur machine autour de Algol, c'est notamment le cas de Burroughs. Un inconv�nient d'Algol est son ignorance de la notion de fichiers qui limita son usage soit � des programmes tournnat sur des machines sp�cifiques soit diffuser sur papier des algorithmes.


En parall�le, un comit� de normalisation des applications de gestion, pouss� par les administrations am�ricaines et quelques grands clients, le CODASYL publia en 1959 les premi�res sp�cifications de COBOL.  La m�moire de Grace Hopper est associ�e � la naisssance de COBOL, essentiellement parce qu'elle apporta son exp�rience de FLOW-MATIC sur Univac I.
Ce langage n'aurait probablement pas eu le succ�s qu'il a connu sans les contraintes de l'administration am�ricaine. Par rapport � FORTRAN et ALGOL, le CODASYL eut le souci de la r�solution des probl�mes pratiques des utilisateurs de fichiers s�quentiels � base de cartes ou de supports magn�tiques.
Aucun langage n'avait �t� con�u pour l'acc�s direct aux donn�es que permettaient les disques magn�tiques et les entr�es directes par terminaux. Les comit�s de normalisation de COBOL se content�rent d'ajouter des commandes (verbes) de positionnement dans les fichiers pour supporter les disques. Ce n'est pas un hasard si les transactions CICS ont  tr�s longtemps �t� longtemps �t� programm�es en macro-assembleur en y ajoutant des commandes sp�cifiques que d'autres constructeurs ajout�rent au COBOL pour supporter le transactionnel. COBOL continua d'�tre am�lior� par le CODASYL sous les versions 1961, 1968 et 1974 et 1980.

IBM, ne supportant COBOL qu'� contre coeur, essaya en 1964 de faire avec PL/1 un langage universel en prenant ce qu'il y avait de mieux dans ALGOL et en lui ajoutant les plus de FORTRAN et de COBOL. PL/1 s'essaya m�me � traiter du temps r�el et du transactionnel en d�finissant le concept de process sans trop en mesurer l'application r�elle. PL/1 traitant tous les formats de donn�es et en particulier les cha�nes de  bits �tait un langage tentant pour rayer l'assembleur de l'offre logiciel. Le concepteurs de MULTICS, puis apr�s eux ceux de Honeywell (PL/6 pour CP-6, puis pour GCOS8) et Bull (HPL pour GCOS64 et GCOS7) pour en faire un langage d'�criture du syst�me d'exploitation. Au prix d'une certaine interpr�tation des sp�cifications de PL/1 et/ou d'une pinc�e d'assembleur, le concept d'une programmation de syst�me en langage de haut niveau fut acquis. IBM, plut�t que d'utiliser PL/1 pour ses nouveaux d�veloppements, en d�finit un sous-ensemble plus efficient PL/S. Un autre dialecte de PL/1 qui eut son importance fut PL/M d�velopp� en 1972 par Gary Kindall qui lui servit comme langage d'impl�mentation de CP/M.

Plut�t que de d�former PL/1 les concepteurs de UNIX autour de Ken Thompson aux Bell Laboratories pr�f�r�rent , � partir de langages d'impl�mentation utilis�s au MIT (CPL, BCPL et B) d�velopper en 1971 leur propre langage qui eut le succ�s que l'on sait, le langage C. Le plus c�l�bre des compilateurs C, appel� gcc, a �t� dans le cadre du projet GNU.

Un langage original, Forth, bas� enti�rement sur le concept de piles et de r�cursivit�, eut un certain succ�s � la fin des donn�es 1970. Il fut con�u en 1969 comme langage de process control par Chuck Moore, un astronome.

En fait, les concepteurs de langages cherch�rent le plus souvent � ce que tous les concepts utiles au programmeur soient d�finissables dans "leur" langage  suivant ainsi la tentation d'imiter l'�volution des langages naturels o� cet utilisateur sans parler des Acad�mies acceptent des mots �trangers pour les nationaliser. L'id�e d'utiliser plusieurs langages diff�rents pour �crire un m�me programme est un concept quelque peu abscons pour un esprit occidental. C'�tait cependant oublier qu'un programme est le plus souvent �crit par plusieurs personnes et, qui pis est, � des p�riodes diff�rentes. Cette n�cessit� a d'abord �t� satisfaite par des extensions des concepts de sous-programmes et par des d�finitions rigoureuses des interfaces entre programmes (param�tres d'appel et de retour) sp�cification rigoureuse des donn�es partag�es, par le concept de package apparu un peu plus tard. Il devint donc possible de ne pas recompiler le programme depuis la totalit� de ses modules en code source, ce qui �tait encore la r�gle sous-entendue par certains langages, mais d'�diter les liens entre modules par un processeur sp�cifique. Cette possibilit� a �t� jug�e n�cessaire par les concepteurs des syst�mes d'exploitation d�s les ann�es 1960, bien que c'est seulement avec le d�veloppement des langages orient�s objet que ce concept a �t� pris en compte par les concepteurs de langage.

Une d�formation des langages et de leurs compilateurs a �t� mis en oeuvre tr�s t�t, c'est de faire pr�c�der la compilation et m�me le parsing par un traitement syntactique au niveau du code source permettant d'�tendre � volont� le langage. L''utilisation de macroprocesseurs plus ou moins sophistiqu�s de l'INCLUDE de C jusqu'au traitement r�cursif de TRAC et du MacProc de Bull, en passant a permis au programmeur COBOL d'�crire des transactions ou de r�aliser une modularit� sp�cifique -pas n�cessairement rigoureuse, parce que non interpr�t�e � l'ex�cution.

Parmi les langages nouveaux qui virent le jour � une cadence plus faible � partir des ann�es 1975, il convient de citer ADA (1979), langage soumis � un concours par le Pentagone avec un objectif de remplacer JOVIAL , un anc�tre de 1960, et de se substituer � PL/1 en renfor�ant le typage des donn�es et la solidit� des interfaces. ADA vint trop tardivement pour s'imposer sur les main frames et trop t�t pour acqu�rir une place sur les micros trop peu puissants, � l'�poque. Il se heurta � la concurrence de C et dut se contenter la niche des syst�mes embarqu�s de l'US Air Force o� il vole op�rationnellement au dessus des continents. Le concours de sp�cification de ADA fut remport� par l'�quipe de Jean Ichbiah � CII-HB.
En France, et pour des besoins � peu pr�s identiques � ceux des �tats-Unis, les Arm�es d�cid�rent d'utiliser le langage LTR (Langage Temps R�el), ce qui eut pour effet de rar�fier le march� potentiel de ADA.

 

Pascal fut un langage d�fini en 1970 � Zurich par le professeur Niklaus Wirth � des fins p�dagogiques: moins complet que C, moins sujet � la "programmation spaghetti" que BASIC,  n'exigeant pas de compilateur volumineux, il �tait appropri� aux micro-ordinateurs de premi�re g�n�ration. Pascal fut m�me quelques temps vers 1980 un candidat pour remplacer le syst�me d'exploitation de ceux-ci par un interpr�teur de P-code (UCSD). On notera aussi � la m�me �poque le succ�s de l'aventure Borland � partir d'un compilateur Pascal sur micros dont le prix mena�a un temps le business de Microsoft. L'augmentation de la taille de m�moire disponible lui fit c�der la place � C. L'�quipe Wirth essaya de prolonger le d�veloppement de PASCAL avec Modula (1975)

 

C'est encore au cours des ann�es 1970 que fut invent� le langage Smalltalk, d�velopp� au Xerox PARC par Alan Kay et Adele Goldberg. Ce langage ajoute � l'esprit de l'UCSD deux donn�es importantes: la prise en compte d'un �cran avec fen�tres (au lieu du paradigme Teletype ou cartes perfor�es utilis�es jusqu'alors) et le concept d'objets communiquant par messages. L'insucc�s de Smalltalk repris par Digitalk eut comme raison le caract�re dogmatique excluant du syst�me les programmes non �crits dans ce langage. Les d�finitions de Smalltalk pour un langage orient� objet, la d�finition de l'h�ritage des variables et le concept de cr�ation/destruction d'objet seront reprises dans le produit industriel le plus important C++ invent� par le danois Bjarne Stroustrup aux Bell Laboratories en 1983 et qui a su coexister avec C -en utilisant le compilateur C comme le traducteur du langage par le pr�processeur C++. Le succ�s de C et de C++ doit beaucoup � la disponibilit� de la cha�ne GNU d�velopp�e initialement au MIT puis dans la communaut� des logiciels libres. La gratuit� de la cha�ne de fabrication a st�rilis� les efforts faits par certains pour fournir une  cha�ne comparable. Il faut toutefois signaler la grande ant�riorit� (1964) du langage norv�gien SIMULA qui fut le pionnier des langages orient�s objet.
Une variante de C++, C# fut introduite en 2000 par Microsoft. 

 

Au milieu des ann�es 1980, une �quipe de Sun autour de James Gosling se mirent � �tudier le probl�me de programmation des objets distribu�s interconnect�s sur Internet. En 1991, ils d�velopp�rent un langage nomm� Oak. L'id�e nouvelle �tait de d�velopper un syst�me de programmation unique pour des objets d'architecture interne diff�rente et dont les programmes devaient pouvoir �tre t�l�charg�s � distance. Avant d'�tre utilis�s dans ce contexte, le concept fut �tendu aux ordinateurs personnels dans le paradigme de "votre ordinateur est le r�seau". ce langage est JAVA (introduit formellement en 1995) qui reprend l'essentiel des concepts de C ainsi que celui des langages interpr�t�s en standardisant le langage interm�diaire destin� au t�l�chargement. Les premiers syst�mes Java fonctionn�rent donc � la mani�re de Basic et eurent des difficult�s � s'imposer contre C pour des raisons de performances que ne contrebalan�aient pas l'am�lioration d la robustesse. La puissance des microprocesseurs et les tailles de m�moire augmentant, il devint possible d'imaginer la r�alisation de compilateurs Java "Just in Time" qui transformaient le langage interm�diaire en code machine sp�cifique du type de microprocesseur � chaque invocation du programme Java. Tout se passait comme s'il s'agissait d'une interpr�tation avec la rapidit� d'un compilateur standard. JavaScript un dialecte sous-ensemble de Java devint rapidement le langage le plus r�pandu dans les applications distribu�es du Web. 

 

Une autre famille de langages est d�riv�e des interpr�teurs de commande eux-m�me d�riv�s des antiques Job Control Languages des syst�mes de batch processing. Les JCL �taient devenus complexes et le besoin de param�trage de ceux-ci par exemple par un jeu de macros s'imposa. Ensuite l'int�r�t d'y introduire le concept de boucles fut reconnu. Nous avions l'embryon d'un nouveau langage de programmation certes sp�cialis� avec des �l�ments relativement ignor�s des langages plus "s�rieux".
Dans les syst�mes time-sharing, l'�quivalent du JCL se retrouvait dans les langages de  commande, qu'on appellera plus tard les shells.
L'analyse des besoins par des informaticiens plus rigoureux aboutit � la cr�ation d'une nouvelle famille de langages interpr�t�s dont les plus connus sont REXX (introduit vers 1980 par IBM Hursley) et PERL (invent� en 1987 par Larry Wall). Bull en fusionnant les besoins du JCL et ceux de l'utilisation interactive cr�a le langage commun GCL sur GCOS7 au d�but des ann�es 1980.

 

Le PHP (1995) est un langage de programmation interpr�t� invent� en Scandinavie sp�cifiquement pour le d�veloppement des applications distribu�es sur Internet. Alors que JAVA se pla�ait d�lib�r�ment comme langage client dans un mod�le client-serveur o� le serveur �tait un simple serveur de bases de donn�es (machine SQL), PHP permet la programmation d'une application sur le serveur en utilisant un catalogue standard de ressources, suffisamment limit� pour ne pas compromettre l'int�grit� du serveur. Le succ�s de PHP actuellement est sans doute d� � son statut de "logiciel libre" associ� au serveur Web Apache et au moteur de base de donn�es MySQL.

 

 

Il reste � parler de langages qui visaient des march�s particuliers ou du moins qui n'ont pas cherch� � en remplacer d'autres. Ces langages sont fond�s sur des interpr�teurs.

LISP a �t� d�velopp� d�s la fin des ann�es 1950 au MIT comme un langage automodifiable bas� sur le traitement de listes. L'id�e  de John McCarthy, dans la lign�e de von Neumann, aura �t� de laisser � l'automate de base de l'interpr�teur la responsabilit� de l'optimisation ou de la recherche de convergence du processus d�crit par le programme LISP. Ce langage fut -avant ALGOL- le premier � admettre la r�cursivit�. Il fut aussi le premier � �tre ind�pendant de la gestion de m�moire et � n�cessiter ce qu'on appellera la "garbage collection".
Sa version Lisp1.5 publi�e en 1962 resta le standard jusqu'� l'�closion de nombreux dialectes dans les ann�es 1980 (Common Lisp, Le_Lisp, � l'INRIA, AutoLisp dans AutoCad, Scheme)
. IL a eu avec TRAC (Calvin Mooers MIT 1966) et Snobol (1962-1964) des continuations visant plus sp�cifiquement le traitement de cha�nes de caract�res -avec les restrictions pos�es par l'ASCII-. Prolog d�velopp� en Europe depuis 1972 � Marseille (Alain Colmerauer et Philippe Roussel) et Edinburgh n'a pas su s'imposer non plus probablement plus � cause de ses m�thodes de commercialisation que par sa participation � la d�b�cle de la Ve g�n�ration japonaise.
LOGO se Seymour Papert, en 1968, fut un essai de populariser les langages de programmation en ajoutant aux constructions de base de LISP des primitives graphiques.

On notera aussi que les tableurs (Visicalc et EXCEL)  dans lesquels ont �t� ins�r�s de v�ritables programmes proc�dent de la m�me logique d'interpr�tation que les processeurs d'intelligence artificielle. Leur convivialit� empirique a eu beau jeu de leur permettre de s'imposer devant leurs anc�tres.

APL invent� par Ken Iverson � IBM � la fin des ann�es 1950 voulait un peu �tre aux nombres ce que LISP �tait aux cha�nes de caract�re. L'utilisation d'un jeu de symboles math�matiques non disponibles sur les claviers ordinaires a probablement �t� une des sources de son �chec devant BASIC et les tableurs. Lui aussi est un langage interpr�t� ex�cutable sans traitement pr�alable par le moteur de la machine.

Les ordinateurs se sont av�r�s capables d'ex�cuter des op�rations non seulement sur des nombres mais sur des variables symboliques. C'est ainsi que sont n�s les langages Macsyma (Joel Moses au MIT en 1969), puis Maple (Universit� de Waterloo en 1980) et Mathematica (Stephen Wolfram 1988) qui permettent les calculs math�matiques sous forme alg�brique aussi bien que sous leur expression num�rique.

On aura du mal � classer EMACS dans les langages de programmation. Mais tout comme les tableurs il s'agit d'un processeur sp�cialis� inspir� de LISP qui a �t� progressivement �tendu pour avoir ces capacit�s de programmation. Son d�veloppement universitaire et sa diffusion dans le monde GNU a fait de Richard Stallman un auteur de programmes ayant marqu� l'histoire de l'informatique.

On n'a trait� ici que des langages r�pandus en dehors de leur �quipe d'origine. A tous les langages � diffusion restreinte dont certains ont �t� � l'origine des langages mentionn�s ci-dessus (BCPL pour C, LIS pour ADA...) il convient d'ajouter ceux destin�s � des applications particuli�res (MUMPS, TeX, Postscript) dont certains m�ritent qu'on leur accorde une place sidans l'histoire du logiciel.

HISTOIRE et Commentaires sur les LANGAGES de PROGRAMMATION

  • FORTRAN
  • ALGOL
  • COBOL
  • PL/1
  • C
  • ADA
  • BASIC
  • LISP
  • SIMULA
  • SNOBOL
  • EMACS

ARTICLES

LINKS

Computer Language History contenant un arbre de la filiation des langages de programmation ainsi que des liens vers des histoires particuli�res aux diff�rents langages.

按揭計算機| 買樓| 上車盤| 搵樓| 屋苑| 樓盤| 地產| 租樓| 租盤| 二手樓| 新盤| 一手樓| 豪宅| 校網| 放盤| 樓價| 成交| 居屋| 貝沙灣| 美孚新邨| 嘉湖山莊| 太古城| 日出康城| 九龍站 | 沙田第一城| 西半山 樓盤| 樓市走勢| 青衣| 西貢 樓盤| 荃灣 樓盤| Grand Austin出售的樓盤| 西半山| 西貢| 荃灣| 貝沙灣租盤| 貝沙灣樓盤| 美孚新邨租盤 | 美孚新邨樓盤| 嘉湖山莊租盤 | 嘉湖山莊樓盤 | 太古城租盤 | 太古城樓盤 | 九龍站租盤| 九龍站樓盤| 日出康城租盤 | 日出康城樓盤 | 沙田第一城租盤| 沙田第一城樓盤 | 西半山租盤| 西貢租樓| 西貢租盤 | 青衣租樓| 青衣租盤 | 荃灣租樓| 荃灣租盤 |

雪茄网购| 雪茄| 哈瓦那雪茄| 雪茄价格| 雪茄烟网购| 雪茄专卖店| 雪茄怎么抽| 雪茄烟| 雪茄吧| 陈年雪茄| 大卫杜夫雪茄| 保利华雪茄| 古巴雪茄品牌| 古巴雪茄| 古巴雪茄多少钱一只| 古巴雪茄专卖网| 烟斗烟丝| 烟丝| 小雪茄| 金特罗雪茄| 帕特加斯d4 | 蒙特雪茄| 罗密欧朱丽叶雪茄| 网上哪里可以买雪茄| 限量版雪茄| 雪茄专卖| 雪茄专卖网| 雪茄哪里买| 买雪茄去哪个网站| 推荐一个卖雪茄的网站| 雪茄烟| 古巴雪茄价格| 雪茄海淘| 雪茄网|

噴畫| banner| banner 價錢| Backdrop| Backdrop 價錢| 易拉架| 易拉架 價錢| 橫額| 印刷| 橫額印刷| 印刷 報價| 貼紙| 貼紙印刷| 宣傳單張| 宣傳單張印刷| 展覽攤位| 書刊 印刷| Bannershop| Ebanner| Eprint| 印刷公司| 海報| 攤位| pvc板| 易拉架設計| 海報印刷| 展板| 禮封| 易拉架尺寸| foamboard| hk print| hong kong printing| Printing| 喜帖| 過膠| 信封| backdrop| print100| 咭片皇| 印館|

邮件营销| Email Marketing 電郵推廣| edm营销| edm| 营销软件| 推广软件| 邮件群发软件| 邮件群发| email marketing| direct marketing| email marketing software| email marketing service| email marketing tools| email mkt| remarketing| edm| edm marketing| email subscription| website subscription| email survey| email whitelist| sign up form| email subject line| subject line| email subject| best email subject lines| free email marketing| Mailchimp| Hubspot| Sendinblue| ActiveCampaign| Aweber| 邮件主题怎么写| 邮件主题| 邮件模板| Maichimp| benchmark|

wms| vending machine| barcode scanner| QR code scanner| SME IT| it solution| rfid tag| rfid| rfid reader| it outsourcing| POS label| IRLS| IT Support| system integration| software development| inventory management system| label printing| digital labelling| barcode label| Self Service Kiosk| Kiosk| Voice Picking| POS scanner| POS printer| System Integrator| printing labels| Denso| barcode| handheld| inventory management| warehouse management| stock taking| POS| Point of sale| Business service| Web Development| vending| app development| mobile app development| handheld device| terminal handheld| inventory management software| pos system| pos software| pos hardware| pos terminal| printer hong kong| receipt printer| thermal printer| thermal label printer| qr code scanner app| qr scanner app| online qr code scanner| qr code scanner online mobile| qr code scanner download| mdm| mobile solutions| mdm solutions| mobile device management|

Tomtop| Online Einkaufen| online shop| Autozubehör| Bekleidung| Kopfhörer| badausstattung| Badmöbel| smartwatch günstig| Luftbefeuchter| lichtbox| Kosmetiktaschen| Make-Up Pinsel| Smartphones günstig| tablet günstig| Wanderstock| fahrrad maske| spielekonsole| spielkonsole| Geldbeutel| Gaming Kopfhörer|

electric bike| best electric bike| electric bikes for adults| e bike| pedal assist bike| electric bikes for sale| electric bike shop| electric tricycle| folding electric bike| mid drive electric bike| electric trike| electric mountain bike| electric bicycle| electric bike review| electric fat bike| fat tire electric bike| women's electric bike |

office| 地產代理| 辦公室| Property Agent| Hong Kong Office Rental| hong kong office| 物業投資| office building| Commercial Building| Grade A Office| 寫字樓| 商業大廈| 甲級寫字樓| 頂手| 租寫字樓| leasing| Rent Office| 地產新聞| office for sale| office building|

太古廣場| 海富中心| 中港城| 統一中心| 瑞安中心| 力寶中心| 信德中心| 新港中心| 中環中心| 合和中心| 康宏廣場| 星光行| 鷹君中心| 遠東金融中心| 港晶中心| 無限極廣場| 光大中心| 中遠大廈| 海港中心| 新世界大廈| 永安中心| 南洋中心| 永安集團大廈| 華潤大廈| 永安廣場| 朗豪坊| 時代廣場| 新世紀廣場| 太古城中心| 希慎廣場| 交易廣場| 創紀之城| 港威大廈| 企業廣場| 新文華中心| 置地廣場| 怡和大廈| 世貿中心| 太子大廈| 中信大廈| 禮頓中心| 中銀大廈| 銅鑼灣廣場| 環球大廈| 海濱廣場| 新鴻基中心| 萬宜大廈| Tower 535| 高銀金融國際中心| 海濱匯| 皇后大道中9號| 國際金融中心| 半島中心| 利園三期| 天文臺道8號| 信和廣場| 娛樂行| 南豐大廈| 帝國中心| 中環廣場| 美國銀行中心| 尖沙咀中心| 新東海商業中心| Chater House| Nexxus Building| One Island East| 中匯大廈| Fairmont House| 華懋廣場| 中建大廈| 北京道1號| 胡忠大廈| Central Plaza| The Centrium| LHT Tower| China Building| AIA Central| Crawford House| Exchange Tower| AIA Tower| World Wide House| One Kowloon| The Gateway | One Island South| Jardine House| Millennium City | Exchange Square| Times Square | Pacific Place| Admiralty Centre| United Centre| Lippo Centre| Shun Tak Centre| Silvercord| The Center| Mira Place| Ocean Centre| Cosco Tower| Harcourt House| Cheung Kong Center|

school| international school of hong kong| international school| school in Hong Kong| primary school| elementary school| private school| UK school| british school| extracurricular activity| Hong Kong education| primary education| top schools in Hong Kong| ESF| english schools foundation| Anfield school| american international school| Shrewsbury International School| Kellett School| singapore international school| Malvern College Hong Kong| Canadian international school| Victoria Kindergarten| Preparatory|