Amcan C a'r We
Iaith raglennu a ddiffinnir drwy ychwanegu haen gwrthrych-gyfeiriadol ar ben C, gan ddefnydd semantig Smalltalk yw Objective-C. Dechreuodd iaith Objective-C fel Cyn-gasglwr Gwrthrych-gyfeiriadol. Dyma gyn-brosesydd syml a oedd yn cymryd dyfeisiadau tebyg i Smalltalk ac yn eu troi’n godau C pur. Gan nad oes gan C gefnogaeth frodorol i ddosbarthu deinamig, defnyddiodd y cyn-gasglwr lyfrgell ar wahân i ymdrin ag edrychiadau deinamig o ddulliau. Esblygodd hyn i’r llyfrgell wrth redeg Objective-C.
Mae’r llyfrgell wrth redeg yn gyfrifol am weithredu’r agweddau ar Objective-C nad ydynt yn mapio’n hawdd ar ddyfeisiau C. Caiff dulliau yn Objective-C eu troi’n swyddogaethau C, ond nid yw'r mecanwaith chwilio sefydlog a ddefnyddir i alw swyddogaethau C yn berthnasol i fodel gwrthrych Smalltalk ac felly gweithredir mecanwaith chwilio deinamig wrth redeg. Mae’r amser rhedeg hefyd yn diffinio strwythurau i’w defnyddio i weithredu dosbarthiadau sy’n storio’r meta-ddata sydd ei angen ar gyfer mewnsyllu i ddulliau a mathau ac enwau achosion amrywiol.
Rhyddhawyd Objective-C i’r cyhoedd yn eang am y tro cyntaf gan Stepstone – cwmni a sefydlwyd gan Brad Cox, sef dylunydd yr iaith, a Tom Love. Gwerthodd y cwmni gasglwr Objective-C a chyfres o lyfrgelloedd. Ym 1988, prynodd ail gwmni cyfrifiaduron Steve Job, NeXt, hawliau Objective-C gan StepStone a daeth yn brif ddosbarthwr cynhyrchion Objective-C.
Defnyddiwyd Objective-C yn system weithredu NeXt, NeXTSTEP mewn nifer o leoliadau. Ysgrifennwyd gyrwyr dyfeisiau yn Objective-C, drwy is-ddosbarthu dyfeisiau generig ac ysgrifennwyd fframwaith cyfan GUI yn yr iaith. Yn gyffredinol, caiff Adeiladwr Rhyngwyneb NeXT ei ystyried fel y teclyn Rapid Application Development (RAD) cyntaf. Roedd yn cynhyrchu bwndeli o’r enw ‘nibs’ a oedd yn cynnwys graffiau o wrthrychau mewn cyfresi. Yn gyffredinol, roedd y rhain yn cynnwys y gwrthrychau gweld a rheoli ar gyfer ffenestr, ac roeddent yn cael eu llwytho a’u cysylltu i wrthrychau model wrth redeg. Roedd y fframwaith yn defnyddio llawer o nodweddion dynamig Objective-C. Er enghraifft, patrwm cyffredinol oedd darparu dirprwy i edrych ar wrthrychau. Byddai hyn yn gweithredu rhywfaint o set o ddulliau diffiniedig, a byddai’r golwg yn ymholi pa rai a oedd yn cael eu gweithredu wrth redeg. Defnyddir patrwm tebyg yn Java. Fodd bynnag, oherwydd bod yr iaith hon yn brin o alluoedd deinamig Objective-C, mae angen i’r dirprwy weithredu pob un o’r dulliau, hyd yn oed os nad yw’r gweithredu yn gwneud unrhyw beth.
Er bod teclynnau datblygu NeXT yn boblogaidd ymhlith y rhai hynny a oedd yn eu defnyddio, roedd pris uchel y peiriannau ($10,000 am y modelau cynnar) yn golygu bod y nifer a oedd yn eu defnyddio’n isel. Un o’r rhai mwyaf enwog oedd Tim Berners-Lee a oedd yn gweithio yn CERN. Gwnaeth Tim ei ddefnyddio i ysgrifennu WorldWideWEb, sef y porwr cyntaf ar y we. Yn ddiweddarach, honnodd na fyddai wedi gallu gwneud hynny oni bai am rwyddineb y rhaglennu a ddarparwyd gan Objective-C, ac yn benodol, fframwaith AppKit NeXT. Gellir gweld llawer agwedd ar AppKit yn y gwaith gwreiddiol o weithredu’r we. Mae'r tagiau gwreiddiol a gefnogir gan HTML yn cyfateb yn uniongyrchol i'r nodweddion a gydnabyddir gan y gwrthrych NSAttributedString a ddefnyddir i gynrychioli testun cyfoethog.
Ysgrifennwyd porwyr gwe dilynol mewn ieithoedd mwy cyntefig, yn nodweddiadol C, ac ni ymddangosodd Objective-C ym maes y we eto tan 1996.Yn yr achos hwn, dyma oedd yr iaith graidd ar gyfer WebObjects, sef yr amgylchedd datblygu cymwysiadau ar y we cyntaf, a gynhyrchwyd eto gan NeXT. Fe’i defnyddiwyd ar gyfer nifer o’r safleoedd eCommerce cynnar ar y we a oedd yn ymddangos, yn ogystal â nifer eraill megis gwefan BBC News a phresenoldeb Disney ar y we.
Roedd WebObjects yn cynnwys cyd-lyfrgell, yr Enterprise Objects Framework.Cafodd ei rhyddhau ddwy flynedd cyn WebObjects ond roedd yn hynod ddefnyddiol wrth ddatblygu cymwysiadau ar y we. Roedd yn defnyddio llawer o nodweddion deinamig Objective-C i weithredu mapiadau a oedd yn cysylltu â gwrthrychau ac roedd hyn yn galluogi pobl i storio gwrthrychau mewn cronfa ddata perthnasol yn barhaus. Ceir rhywbeth tebyg yn y rhan fwyaf o fframweithiau cymwysiadau ar y we heddiw.
Gellir gweld yr effaith fwyaf parhaol ar y we o effaith Objective-C wrth ddatblygu Java. Roedd Patrick Naughton, un o ddau brif ddatblygwr Java, wedi cael cynnig swydd yn NeXT cyn dechrau gwaith ar Java, ac roedd o’r farn mai Objective-C oedd y peth mwyaf cŵl ers creu torth o fara wedi’i thorri (sleisio), ac roedd yn casáu C++. Mae gan Java nifer o briodoleddau Objective-C, gan gynnwys etifeddiaeth unigol, rhwymo dynamig, llwytho dynamig, dosbarthiadau fel gwrthrychau, rhyngwynebau ffurfiol (protocolau yn Objective-C) a mathau cyntefig (nad ydynt yn wrthrychau.) Mae’n ychwanegu cystrawen sy’n fwy cyfarwydd i ddefnyddwyr C++ a system fwy sefydlog ar ben y rhain.
David Chisnall