գուցէ գիտէք, որ borland֊ը որ ստեղծել էր delphi֊ն, փորձեց object pascal֊ում եղած ֆիչըրները բերել c++։ ու բորլանդի c++֊ը տարբերւում ա սովորական c++֊ից նրանով, որ ունի այսպէս կոչուած closure֊ներ, կամ անոնիմ մեթոդներ։
իրականում, եթէ գալիս ես օբերոնից՝ ոչ մի տարօրինակ բան չկայ, շատ նորմալ ֆունկցիոնալ ա։
ահա օրինակ՝
type
TNotifyEvent = procedure(Sender: TObject) of object;
TButton = class
private
FOnClick: TNotifyEvent;
public
procedure Click;
property OnClick: TNotifyEvent read FOnClick write FOnClick;
end;
procedure TButton.Click;
begin
if Assigned(FOnClick) then
FOnClick(Self);
end;
procedure MyButtonClick(Sender: TObject);
begin
WriteLn('Button clicked!');
end;
procedure SomeEntryPoint;
var
Button: TButton;
begin
Button := TButton.Create;
Button.OnClick := @MyButtonClick;
Button.Click; // Outputs: Button clicked!
Button.Free;
end;
TNotifyEvent֊ը ֆունկցիայի, պրոցեդուրայի տիպ ա։ յետոյ այդ տիպի պրոցեդուրա ա կարելի ստեղծել։
Sender: Tobject ֊ը մեզ պէտք ա, որ իմանանք ով ա այդ event֊ը ուղարկել։ ինչի՞ ա ինքը TObject տիպի՝ որովհետեւ դա կլասսերի ծառի արմատն ա՝ ամէնը դրանից են ժառանգած, այսինքն՝ ամէնը կարելի ա դրան վերագրել։
օրինակ, կարելի ա էսպէս իմանալ թէ ով ա՝
if Sender is TButton then // Check if the sender is a button
begin
if TButton(Sender).Name = 'Button1' then
ShowMessage('Button 1 was clicked!')
else if TButton(Sender).Name = 'Button2' then
ShowMessage('Button 2 was clicked!');
end
else
begin
ShowMessage('Something else triggered this event!');
end;
տեսէք լրիւ օբերոնի runtime check անող IS ֊ն ա։
Button(Sender).Name ֊ը թոյլ ա տալիս կարդալ էդ կոնկրէտ կոճակի անունը։ օրինակ, կարող ես կոճակի անունը դնել Button1, իսկ կարող ես օրինակ՝ processButton։
Button֊ը իրականում ցուցիչ ա յիշողութեան մի տեղի, որ դատարկ ա։
TButton.Create֊ը լցնում ա էդ տեղը, ստեղծում ա յիշողութեան մէջ դաշտերը, կլասը, ու վերադարձնում ա էդ պատրաստուած յիշողութեանը ցուցիչ։
Button.OnClick֊ին կարողանում ենք վերագրել MyButtonClick ֆունկցիայի հասցէն։
այդ OnClick֊ը pascal֊ի property ա, որը կայ իմ իմանալով միայն այլ անդրեաս հայլսբերգի լեզուի՝ c#֊ի մէջ։
դրանից յետոյ Button.Click֊ը դա ա կանչելու։
շատ օբերոնական ա, չէ՞։ (:
ո՞նց ա դա արւում borland֊ի c++ դիալեկտով՝
#include <vcl.h>
#pragma hdrstop
class TButton
{
private:
typedef void __fastcall (__closure *TNotifyEvent)(TObject *Sender);
TNotifyEvent FOnClick;
public:
void __fastcall Click()
{
if (FOnClick)
FOnClick(this);
}
void __fastcall setOnClick(TNotifyEvent value)
{
FOnClick = value;
}
TNotifyEvent __fastcall getOnClick()
{
return FOnClick;
}
__property TNotifyEvent OnClick = {read=getOnClick, write=setOnClick};
};
void __fastcall MyButtonClick(TObject *Sender)
{
ShowMessage("Button clicked!");
}
int main()
{
TButton *Button = new TButton;
Button->OnClick = MyButtonClick;
Button->Click(); // Outputs: Button clicked!
delete Button;
return 0;
}
նախ, ահագին ոչ ընթերնելի ա, ինձ թւում ա։
յետոյ, դէ մասնաւորապէս որովհետեւ fastcall֊ը նշանակում ա որ պասկալի ֆունկցիա ա կանչելու, զի ամբողջ գրադարանը (vcl֊ը կամ fmx֊ը) պասկալով ա գրուած։
closure֊ը borland֊ի լուծումն ա որ մեթոդ փոյնթերն իմանայ this֊ի մասին։ ոնց pascal֊ում ա հնարաւոր։
property֊ով են փորձում դէ property իրականացնել։
հետաքրքիր ա, որ qt֊ն էլ ստանդարտ c++ չի՝ իրենք փաստացի նոր լեզու են ստեղծել, ու իրենց մօտ կայ moc (meta object compiler) որը յետոյ բերում ա qt֊ի կոդը ստանդարտ c++֊ի։ ու իրենք ունեն ինչ֊որ slot֊եր ու signal֊ներ որ էլի էմուլացնում են նոյն բանը՝ property֊ներ ու event֊ներ։
gtk֊ում ստանդարտ c ա, ու դա աւելի ա դուրս գալիս։
ի դէպ՝
https://norayr.am/weblog/2021/04/18/2492083/ — այն մասին ա որ embarcadero֊ն այլեւս չի կարողանում իր c++ քոմփայլերը շարունակել, զի c++ ստանդարտն էնքան արագ ա շարժւում, որ չեն ձգում։ ու հիմա փաստացի մէյնթէյն են անում llvm֊ի փաթչեր։ llvm֊ի արտօնագիրն էլ թոյլ ա տալիս որ դա անեն։ աւաղ։ (:
https://norayr.am/weblog/2021/04/19/2530704/
#ծրագրաւորում #ծրագրաւորման_լեզուներ #տէք #պասկալ #օբերոն #pascal #oberon
լաւ նորութիւն spyurk.am
ջաբեր հաշիւ ունեցողների համար, յուսամ յուսալի կաշխատի՝
այսուհետ կարող էք կպնել ցանկացած irc
սենեակներին օգտագործելով միայն ջաբեր հաշիւը։
այդ համար պէտք ա ներմուծել սենեակի անունը, օրինակ այսպէս՝
#oberon%irc.libera.chat
իսկ կոնֆերանս սենեակի սպասարկիչը՝
bibi.spyurk.am
յէ՛յ։
ինձ շատ ա դուր գալիս ջաբերը նրանով, որ կարելի ա մի հաշիւ ունենալ, ու կպնել տարբեր եւ զանազան սենեակների, որ գտնւում են լրիւ այլ սպասարկիչների վրայ։ հիմա նաեւ irc
սենեակների։
եւ եթէ սովորաբար կպնում ես irc
սպասարչի ուղիղ, այն գիտի այփիդ, դրա փոփոխութիւնները, իսկ այսպէս կրկին, սերուերդ քո տեղեկատւութիւնը թաքցնում ա, քեզ ներկայացնելով։
ու տէնց։
յ․ գ․ եթէ չունէք սփիւռքի հաշիւ, նմանատիպ կամուրջներ էլի կան, ասում են jabber.fr
֊ն ունի (չեմ ստուգել), ու փորձել էի այս կամուրջը։
յ․ յ․ գ․ լիբերայի #ada
սենեակը վերջն ա, ինչպէս եւ ##programming
֊ը։
#սփիւռք #ջաբեր #այառսի #կամուրջ #բիբումի #չաթ #համացանց #ապակենտրոնացում #####
ես խնդիր ունեմ՝ ֆֆ֊ն եթէ փակուի, գիտի որ պատուհանը որ աշխատատիրոյթ տանի, իսկ փիջինը չի իմանում։
հետեւաբար ամէն անգամ փիջին անջատել միացնելուց յետոյ երկար դասաւորում եմ պատուհանները։
հիմա աւտոմատացրի էդ խնդիրը։
մի նիշքի մէջ ձեւակերպում եմ որ պատուհանը որ տիրոյթում լինի։ ցանկ ա, զի չգիտեմ որ տաբն ա էդ պահին բաց լինելու, ու ապա որն ա լինելու պատուհանի վերնագիրը։
սա իմ կարգաւորումների նիշքն ա՝
2:oberon spyurk khosenk մերգելեան գրադարան
2:intentionally_blank посторонним_в to_the_ocean_netters-dev ցանցառներ_նախագծում շեքսպ_արեւ_սոնա
3:#pine64 #pinetime #pinephone
3:#pinetab #pinebook
4:#ada #retro ##forth
4:#fpc #oberon #lazarus #pascal
5:#gentoo-powerpc #hellosystem #plan9 #minix #netbsd #freebsd #openbsd #gentoo
5:#maemo-leste #maemo #postmarketos #postmarketos-offtopic
6:#security #opsec
6:privacy-and-security privacy
7:dino_chat blabber_support conversations operators prosody xsf
7:##programming ##tokipona #pidgin #lesswrong
8:#socialhome #thefederation #diaspora #mastodon #scuttlebutt #indieweb
8:dishub fediverse disroot schroedingers_chat 404_English_chat support_for_chat.sum7.eu
9:#roms #ebooks
9:#tilderadio #helpdesk #anonradio
10:#soylent #politics #editorial
10:политика
11:fotografie
11:#photogeeks #darktable
11:#opensourcemusicians
11:cybersnoot
12:openhardware homebrew_server_club modding_fridays openwrt 64sprites
12:geminauts
13:onfoss floss linuxforum FSFE_community
13:#windowmaker #icewm
ամէն տիրոյթում ուզում եմ ունենալ երկու պատուհան, ու յստակ տեղում ու յստակ չափսի։
հիմա որ շրջում եմ տիրոյթներով, շատ հաճելի ա տեսնել նոյն ձեւ բաց պատուհաններ, ու խօսակցութիւնները։
սա էլ հիմնականում սկրիպտն ա՝
function find_active_tab_from_list2 {
read -a list <<< "$(printf "%s" "$@")"
local func_result=""
for i in "${list[@]}"
do
res=`wmctrl -l | grep ${i} | awk {' print $1 '}`
if [[ -n "$res" ]]
then
#func_result=$i
func_result=$res
fi
done
echo "$func_result"
}
այս ֆունկցիան վերնագրերի լիստն ա վերցնում ու գտնում window id֊ն որը պարունակում ա դրանցից մէկը։
(կարելի էր եւ window id չվերադարձնել, այլ հէնց անունն օգտագործել, բայց մտածեցի window id֊ն հաստատ չի կրկնուի)։
սա էլ մնացած սկրիպտի մասն ա՝
if [[ -z $1 ]]
then
echo "provide config file name"
exit
fi
set -x
var=0 #this is used to check for odd or not to put window on the left or right
while read line
do
wrkSpc=`echo $line | awk -F ":" {' print $1'}`
winLst=`echo $line | awk -F ":" {' print $2'}`
win=$(find_active_tab_from_list2 "${winLst[@]}")
if [ $((var%2)) -eq 0 ]
then
wmctrl -i -r $win -t $wrkSpc
wmctrl -i -r $win -e 0,150,50,800,900
else
wmctrl -i -r $win -t $wrkSpc
wmctrl -i -r $win -e 0,1050,50,800,900
fi
var=$((var+1))
done < $1
նախ ստուգում ա արդեօք կարգաւորումներով ֆայլի անունն ա ստացել, յետոյ տող առ տող առանձնացնում ա տիրոյթը տաբերի անունների ցանկից։
կանչում ա էն ֆունկցիան, ստանում ա պատուհանի համարը ու տեղաւորում այն էն կոորդինատներով որ նշած են։ յաջորդ անգամ միւս կոորդինատներով ա տեղաւորում։
կարելի ա էլի լաւացնել, որ ըստ էկրանի չափսերի աւտոմատ որոշի ոնց տեղաւորի։ դէ ըստ իմ նախընտրութիւնների, ես օդ եմ սիրում, ազատ տարածք այդ պատուհանների միջեւ եւ շուրջը։
սա էլ սկրիպտով պանակը։
#սկրիպտ #էքս #իքս #էքսորգ #իքսորգ #լինուքս #իւնիքս #փիջին #պատուհան #չաթ #էկրանահան
this is a very good blog post՝ back to basics about strings in C and Pascal. i suggest you to read it, and now i’ll tell you something else:
in Oberon, Wirth decided to give up on Pascal strings, and use zero terminated strings.
however, there is no need to run by the whole array to find out the length of the string. we don’t even need to have a separate field that holds the length՝ compiler knows the length of the static string.
thus it can do compile time tests. for example we have the following Oberon source՝
MODULE tst;
IMPORT Out;
VAR i: SHORTINT;
str: ARRAY 1024 OF CHAR;
BEGIN
FOR i := 0 TO LEN(str) DO
Out.Int(i, 0); Out.Ln
END;
END tst.
lets try to compile it՝
[2020-09-02 16:00:20] $ voc -m tst.Mod
tst.Mod Compiling tst.
9: FOR i := 0 TO LEN(str) DO
^
pos 102 err 113 incompatible assignment
Module compilation failed.
[2020-09-02 16:00:21] $
voc compiles Oberon source to C, which is very good to illustrate what happens. if we have՝
str: ARRAY 16 OF CHAR;
then the output C code will be՝
static CHAR tst_str[16];
nothing more։ no field for the length.
still, this՝
FOR i := 0 TO LEN(str) DO
will translate to՝
tst_i = 0;
while (tst_i <= 16) {
as i said we know the length at compile time. doesn’t matter if you generate C or assembly, you already know the number, you can put the number to the output assembly code as well.
when we write a function which receives strings, we should not knowt the length of the received string, we just use ARRAY OF CHAR
as an argument՝
MODULE tst2;
PROCEDURE addStrs(VAR a, b: ARRAY OF CHAR);
BEGIN
(* do smth useful here *)
END addStrs;
PROCEDURE test*;
VAR
s0: ARRAY 32 OF CHAR;
s1: ARRAY 64 OF CHAR;
BEGIN
addStrs(s0, s1);
END test;
END tst2.
therefore C code will be՝
static void tst2_addStrs (CHAR *a, ADDRESS a__len, CHAR *b, ADDRESS b__len)
{
/* here we think we can do smth useful */
}
void tst2_test (void)
{
CHAR s0[32];
CHAR s1[64];
tst2_addStrs((void*)s0, 32, (void*)s1, 64);
}
as we see՝ the function also gets the length of strings. and if we do LEN(a)
we get the length without any calculations.
now let’s see how dynamic strings work՝
MODULE tst3;
PROCEDURE addStrs(VAR a, b: ARRAY OF CHAR);
BEGIN
(* do smth useful here *)
END addStrs;
PROCEDURE test*(i: INTEGER);
VAR
s: ARRAY 32 OF CHAR;
ps: POINTER TO ARRAY OF CHAR;
BEGIN
NEW(ps, i);
addStrs(s, ps^);
END test;
END tst3.
now we hase a static string՝ s and we allocate a dynamic string with its pointer ps
.
lets assume we don’t know the size of ps^
string (^
means dereference) and we will receive the length of the allocated string as a function argument. it is not known at compile time.
first function remains unchanged, second function gets translated like this՝
static void tst3_addStrs (CHAR *a, ADDRESS a__len, CHAR *b, ADDRESS b__len)
{
/* do smth useful here */
}
void tst3_test (INT16 i)
{
CHAR s[32];
struct {
ADDRESS len[1];
CHAR data[1];
} *ps = NIL;
ps = __NEWARR(NIL, 1, 1, 1, 1, ((ADDRESS)(i)));
tst3_addStrs((void*)s, 32, (void*)ps->data, ps->len[0]);
}
the _NEWARR
is a bit more complicated function, which is a part of the runtime.
but we can understand what it does՝ it allocates a space in the heap, and the pointer ps
we get now points to the struct
, which has a data
field and len
field.
this is a runtime information, and in this case we have to keep a separate field for the length of the string.
that’s it.
#oberon #c #pascal #wirth #programming #programming-languages #programming_languages #design #implementation #vishap #voc #compiler #compilation #strings #string #heap #stack #storage #storage-management #storage_management #length
Inappropriate deallocation of dynamic storage is a well-known source of catastrophic program failures. In the context of nonextensible applications, such as statically linked programs, this problem can (in theory) be mastered by a careful programmer; for extensible programs, it cannot! There is always the possibility that a module may be added to a program later on; such an extension can introduce additional references to objects of which the implementor of the core modules is unaware. Therefore, Oberon neither requires nor allows explicit deallocation of dynamic storage.
#oberon #gc #programming #programming_languages
The language, however, makes veryfew assumptions about the environment. If not available from a given operating system, dynamic module loading, command invocation, and automaticgarbage collection can be introduced by a small run-time system. In principle, it is possible to forego dynamic loading and to create traditional, staticallylinked applications, but this is anachronistic for the challenges of today’s software systems. Automatic garbage collection is indispensable for reliable,extensible software systems and is probably the biggest culture clash between Oberon and other compiled languages such as Pascal, C, or C++.
#oberon #gc #programming #programming_languages
#oberon for #ARM (32bit) running on #aarch64 #pinebook.
i am writing a bash script, and think of, how convenient it would be to be able to call a particular function from a script from shell.
and realize that it is already done in #oberon.
now in shell i can do source myscript && myfunc smth
, instead of neat and clean myscript.myfunc smth
. :/
#oberon #bash #linux
Why I use Object Pascal https://dubst3pp4.github.io/post/2017-10-03-why-i-use-object-pascal/
#pascal #programming #article #object_pascal #design
first of all, the article does not mention the most important thing - modules. pascal has modules. modules were introduced to c++ just in 2017. modules are why you can have type checks across boundaries of modules.
and pascal units are modules. if they do those loadable on demand, that would be cooler.
Pascal is very strict, so the programmer has to differ between subroutines that return values, in Pascal called functions, and subroutines that does not return something, called procedures. Functions and procedures can also be passed to variables or other functions thanks to procedural types.
well, in pascal successors the function
keyword removed, leaving just one procedure
, or to be precise PROCEDURE
because Wirth decided to make successor languages case sensitive and decrease the number of lexems.
It is possible to overload operators for specific types. With this feature, you have the power to define, let’s say, the result of the addition operation of two or more instances of the same class.
That’s one of the reasons why Wirth doesn’t like modern pascal implementations. The author tries to say - Pascal has all the features, while Wirth was trying to create a minimalistic language by following “less is more” principle.
Pascal is modular
okay, he said this. but did not connect to the type checks.
Pascal has good documentation
indeed, freepascal.org documentation is good, understandable and comprehensive.
well, for me Pascal today is like ‘better c++’, but why would i need better c++ if i have Oberon?
i will use it to write gui applications, or if i need to write something very fast and i don’t have libraries for Oboren and time to create libraries or bindings.
#pascal #oberon #modula-2 #wirth #design
my major lifegoal is to keep #oberon alive.
Me being a teacher had a decisive influence on making language and systems as simple as possible so that in my teaching, I could concentrate on the essential issues of programming rather than on details of language and notation.
#wirth #pascal #modula #oberon
very funny (:
#not_pascal #pascal #component_pascal #oberon
catastrophic example. #oberon
what i enjoy very much in discussions on our #oberon channel in IRC, is that it becomes obvious that knowing the language, does not mean knowing how to use it, i. e. how to program.
#programming
you use VAR because you want to get the pointer to the array, instead of copying the whole array to the procedure’s stack.
so the suggestion was that if you want to make sure the array won’t be modified, you use “-” mark.
what about optimizations, they say, that in principle compiler can understand that you did not write to the passed array, and instead of passing it to the procedure by value (by copying the whole array), pass it by reference (by copying only pointer to it).
i disagree, because i believe, it is important to mark your intentions. if you intent to make sure you pass it read-only, you pass it with “-”, if you intent to pass it read-write, you pass it just with VAR. passing with ‘OUT’, when you cannot read it, but can only write to it is not supported in Oberon.
@{Antranig Vartanian ; antranigv@spyurk.am} 01.06.2017, 19:08:27
#oberon #programming #language #design ##
my bot is live and chatting. https://github.com/norayr/irc_client/tree/vocbot for that i’ve implemented sockets wrapper, IRC library, and some list classes. written from scratch in Oberon, it only uses socket related system calls.
#oberon #irc #bot #vocbot #screenshot
btw my bot is live and chatting. https://github.com/norayr/irc_client/tree/vocbot
for that i’ve implemented sockets wrapper, irc library, and some lists. #oberon
now it’s better (than the commented version)
@{Antranig Vartanian ; antranigv@spyurk.am} 17.05.2017, 22:29:36
solving https://www.reddit.com/r/dailyprogrammer/comments/68oda5/20170501_challenge_313_easy_subset_sum/
#DailyProgrammer #Oberon #Oberon-2 #voc ##
#programming #screenshot
@{Antranig Vartanian ; antranigv@spyurk.am} 17.05.2017, 22:29:36
solving https://www.reddit.com/r/dailyprogrammer/comments/68oda5/20170501_challenge_313_easy_subset_sum/
#DailyProgrammer #Oberon #Oberon-2 #voc ##
and this is an example of how to survive in Oberon without enumerated types.
https://github.com/norayr/enums_example
and it’s even cooler than enumerated types.
#oberon
if you are forced to use a subset of the language due to its complexity, then they failed to offer an useful language.
from #oberon room on freenode.
#programming #programming-languages #programming_languages #chat #talk
#shuttle #space_shuttle #oberon #rendering #board #render #airplane
apparently, my forking server example (:
#oberon #hn #screenshot #voc #vishap #irc #example #programming
i love to read threads like this
#oberon #oberon-2 #programming #programming_languages #history #discussion #usenet
i am reading a paper about making a kernel which supports cooperative multitasking, to replace the current A2 kernel which supports more wide spread blocking synchronization. i wonder if they’ve managed to change the kernel and if current A2 has this lock free kernel or not. i remember i have read something about problems they had with drivers - they need to be rewritten to not use interrupts any more.
#multitasking #cooperative_multitasking #theses #paper #a2 #oberon #operating_systems #blocking_synchronization #preemptive_multitasking #parallelism #programming
IDDEE — Integrated development and documentation and execution environment.
Suggested by Templ for Oberon systems ported to other operating systems.
#oberon #oberon-2 #iddee #ide #templ #operating_systems #blackbox #programming
I woudl like to quote this post, instead of resharing because I don’t agree with everything there. I don’t think we have to forget our native languages, that’s why comparison to the switch from facebook to diaspora, which was made there seems deeply not right to me. I personally value my language, and it doesn’t make me feel good when I acknowledge threats it has.
Also, I have to say that I also fear simplicity in design. Simplicity can mean gaining flexibility and expressiveness, like in case with Oberon operating system and language, and it can mean something like Newlang, the language which was simple but was designed in order to rule those people.
Simplicity can also mean “don’t know what pointer is” which, I believe is wrong, because every programmer should know what pointer is. Simplicity can mean making phonemic orthography, and I am opponent of that. That approach, taken by communists, in my opinion, damaged Armenian orthography and language.
So I believe, simplicity does not always mean good design. However, good design is very often simple. Now the quote.
English vs. Esperanto:
English:
You sang nicely, AND You have sung nicely, AND You had sung nicely, AND You did sing nicely , AND You did use to sing nicely, AND You were singing nicely, AND You used to sing nicely.
Esperanto:
#esperanto #design #simplicity #comparison #english #orthography #phonemic_orthography #language #armenian #oberon #programming #pointer #flexibility #expressiveness
I have managed to port Wirth’s PICL language compiler (which generates code for PIC16F84) to GNU/Linux(used voc to compile it), I mean, it’s possible to run it, compile sample programs with it on my desktop. Now need to make some more improvements and write a manual so that people can use it.
#pic #pic16f84 #embedded #embedded_programming #programming #screenshot #compiler #wirth #picl #programming_languages #hardware #hardware_programming #oberon
I took the 142 rules of the MISRA-C:2004 “Guidelines for the use of the C language in critical systems” and applied them to Oberon-07. I discovered that more than 70% of the rules are not required when programming in Oberon-07. They are either already enforced by the language or are not applicable.
Examples of MISRA rules that are not applicable to Oberon-07:
Rule 14.4: The goto statement shall not be used. (Oberon-07 does not have GOTO)
Rule 14.5: The continue statement shall not be used. (Oberon-07 does not have CONTINUE)
Examples of MISRA rules that are enforced by the design of Oberon-07:
Rule 14.7: A function shall have a single point of exit at the end of the function.
Rule 16.6: The number of arguments passed to a function shall match the number of parameters.
The remaining 30% of MISRA rules that also need to be checked when using Oberon-07 include:
Rule 2.4 (advisory): Sections of code should not be “commented out”.
Rule 20.4: Dynamic heap memory allocation shall not be used.
#programming #oberon-2 #oberon-07 #oberon #misra #safety #safe #guidelenies
The biggest impediment of rPi is that it is available from only one place due to Broadcomm hold on the processor and the personal union between Broadcom and the rPi Foundation (both run by the same person). Broadcomm has killed the competing rPi clones by simply refusing to sell the CPUs to the independent developers. Even if Broadcomm changed this policy (which I have not heard of), you simply cannot trust the chip vendor with this track record.
IMHO, investing any effort into rPi is a dead alley if you have any plans of “selling these boards to rural Africa”. Simply put, you are at the mercy of a single source who has a track record of using dirty practices against the competition. This is contrary to the idea of open design.
I am currently working on a BeagleBone which I selected precisely because I can buy the processor chips from Texas Instruments who has never refused to sell their chips to anyone. I am not impressed with performance, quad core or whatever. My only concern is whether I can build what I design, and then “sell to rural Africa”. Therefore, the rPi is completely ruled out forever.
#raspberrypi #raspberry-pi #raspberry_pi #broadcom #rpi #beaglebone #texas_instruments #ti #oberon #quote #freedom
When module stays loaded and can be manipulated from the “shell” by calling so called commands, i. e. exported functions of that module. That’s very beautiful design, I believe.
https://www.youtube.com/watch?v=byC98PHZR2Y
#oberon #operating_systems #programming #draw #demo #shell #tui #interface #design
something about new warning message։
#oberon #voc #programming #screenshot
https://www.youtube.com/watch?v=Pe0ZdzO_urU
#interface #gui #turing #a2 #bluebottle #oberon #programming
This page refers to some technologies as “computer science fiction”. Among them to Oberon. This brings another meaning to Vishap oberon compiler. Oberon is like aliens, ghosts. And Vishaps.
#computer_science_fiction #fiction #cs #computer_science #vishap #aliens #ghosts #vishaps #dragon #dragons #compiler #oberon #oberon-2 #compilers #technologies
Now, modular programming is possible in C, but only if the programmer sticks to some fairly rigid rules:
http://www.modulaware.com/mdlt35.htm
#programming #modularity #modular-programming #modules #C #modula #modula2 #oberon #consistency #safety
this competition demonstrates that their compiler generates poor code for loops http://www.astrobe.com/forum/viewtopic.php?f=4&t=448
#compiler #oberon #competition
project oberon 2013 on hacker news https://news.ycombinator.com/item?id=8620053
#oberon #project-oberon #programming #os #operating-systems #hacker-news #book
improved a little bit and added readme
https://github.com/norayr/rrro
#oberon #risc #compiler
#oberon #programming #operating-systems #oberon-v5 #screencast
@{ Փրչրթան✱ Թանաքեան ; norayr@spyurk.am} 11.09.2014, 22:31:53
Oberon V5 կոմպիլյացիա։
#օբերոն #աւբերոն #կոմպիլյացիա #էկրանահան
added an example from Reiser’s book. IFS, Iterated Function System.
@{ Փրչրթան✱ Թանաքեան ; norayr@spyurk.am} 28.08.2014, 14:49:37
աւելացրի Ռայզերի գրքից մի օրինակ։
#վօկ #վիշապ #ծրագրաւորում #նկար #գրաֆիկա #մաթեմ
#voc #vishap #oberon #programming #graphics #math
https://lists.inf.ethz.ch/pipermail/oberon/2014/007079.html
#oberon #fpga #programming #operating-systems #hardware-design #computer #photo
In seiner Jugend baute Niklaus Wirth Modell-Flugzeug und hat dabei gelernt, sich auf das Wesentliche zu beschränken
http://www.srf.ch/wissen/digital/computer-pionier-niklaus-wirth-80-und-aktiv
#oberon #wirth #foto
work in oberon v4 system (in this example it’s used over windows).
https://www.youtube.com/watch?v=UTIJaKO0iqU
Note how he’s able to compile source which exist only in window (marked by asterisk), how he calls exported module functions from the environment.
#oberon #operating-systems #programming
Autopilot / automatic landing video
The plane starts to appear about 30 seconds into the video.
autopilot is programmed by Shiryaev in #Oberon-07 language.
#oberon #programming #uav #plane #landing #airplane
Niklaus Wirth steuert Ceres-PC mit Oberon @ETH, 27. Mai 2011
https://www.youtube.com/watch?v=HoZuzE7Lq5E
#niklaus-wirth #wirth #ceres #oberon #eth #2011 #operating-systems #video #programming
պատահաբար հանդիպեցի՝ http://listarc.com/showthread.php?5356219-FPGA+toolchain+again. (:
#oberon #voc #vishap #feedback #compiler
#oop #oberon #java #hoar #employment #irc #screenshot #chat
վիշապ օբերոն կոմպիլյատորի մակոսի պորտը նոր աւարտեցի։ ։Ճ
i’ve just finished macosx port of vishap oberon compiler
#oberon #voc #vishap #compiler #macosx #programming
ասք վիշապին մակում բնակեցնելու մասին՝ http://norayr.arnet.am/weblog/2014/03/20/ասք-վիշապին-մակում-բնակեցնելու-մասին/
#voc #oberon #clang #vishap #վիշապ #հետազօտութիւն #ասք #ծրագրաւորում #ուտենց
#shanghai #game #screenshot #oberon #aos #gadgets #desktop #էկրանահան #Շանհայ #խաղ #օբերոն
Wirth updated he’s Project Oberon sources in February 4, so I decided to track the changes by putting those sources to github. These are changes, mainly in Kernel.Mod https://github.com/norayr/ProjectOberon/commit/86576bbc7b0f8d5153d5b12e4093d1d6310ad72e
#oberon #wirth #kernel #programming #github #git #book #project-oberon #development #software
Hilbert curve and it’s Oberon source from the Project Oberon 2013 edition.
#gif #oberon #project-oberon #hilbert #hilbert-curve #source #2013 #book #fractal
Lightweight parametric polymorphism for Oberon.
http://research.microsoft.com/en-us/um/people/cszypers/pub/jmlc97.pdf
#oberon #oberon-2 #polymorphism #programming #research #paper #oop #development #software
New edition of Wirth’s book Project Oberon is out. It describes not only built from scratch software(entire operating system and compiler), but design of the hardware as well.
The vast complexity of popular operating systems makes them not only obscure, but also provides opportunities for “back doors”. They allow external agents to introduce spies and devils unnoticed by the user, making the system attackable and corruptible. The only safe remedy is to build a safe system anew from scratch.
http://www.inf.ethz.ch/personal/wirth/ProjectOberon/index.html
#oberon #wirth #niklaus-wirth #risc #programming #fpga #books #programming-languages #compilers #operating-systems #compiler #freedom #design #security #privacy #surveillance #reliability
in response to an assertion by mr john carmack who is wrong (:
http://www.youtube.com/watch?v=pI4IYRT-Msw
#oberon #render #3d #design #programming #graphics
I’ve mentioned before in comp.lang.modula2, Oberon hasn’t a specific set of object-oriented techniques burnt into the language. Instead of this, Oberon provides you with all necessary features (namely type extension, type tests, procedure types and hidden record components) to adapt any interesting OO-technique. Surprisingly enough, the Oberon techniques in practise are much more powerful than common OO-models and OO-languages. As an example: C++ provides so many unnecessary features and so much more complex than Oberon but doesn’t provide type tests up to now.
https://groups.google.com/forum/#!topic/comp.lang.oberon/8Bmb20Ds8Cg
#Oberon #oop #c #c++ #1993 #type-extention #type-tests #procedure-types #libc #usenet
https://groups.google.com/forum/#!topic/comp.lang.oberon/8Bmb20Ds8Cg
#programming #usenet #1993 #oberon #c #libc #ulms-oberon-compiler #programming-languages #hello-world #write #printf #setlocale
https://github.com/norayr/voc/commit/a3214b81549d7c1d4654c62af52514261ed08ed0
different modules can be now compiled into one elf at once (no separate linking command needed). for example, if M0 imports M1 then
voc -l M1.Mod -s M0.Mod -M
where -l is a global option (show line numbers, I don’t use it, I need only position, and do :goto in vim to get it)
-s means generate symbol file, we need it to compile M0, and check types throughout module boundaries
-M means generate main module and link it statically to libVishapOberon.
#voc #vishap-oberon #oberon #oberon-2 #compiler #linking #programming
I have published Vishap Oberon compiler
#vishap #voc #oberon #oberon-2 #compiler #ofront #pascal #modula-2 #fork #github #compilers #վիշապ #օբերոն #կոմպիլյատոր #պասկալ #մոդուլա֊2 #ծրագրավորում
#story about #linking #Pascal and #Oberon: http://norayr.arnet.am/log/?p=11
http://www.youtube.com/watch?v=dNuIgg2cySo
#unix-aos #aos #active-oberon #active-oberon-systom #A2 #unix #linux #oberon #ray-tracer
how to interface call #Oberon code from #freepascal. http://norayr.arnet.am/weblog/?p=4470 #oo2c #fpc #oberon-2 #bindings