i have showed these tiles back a couple of years ago. this time the tiles have been spotted at the remote village farm. i asked where they did get the tiles, and they answered that someone brought those from an old factory.

other places i spotted those - nissan service in yerevan - i guess they did not change anything, just use the old industrial building, and tapastan cafeteria on sarian street in yerevan.

btw, tapastan[տապաստան] is a wordplay - they refer to tapas, so it is a land of tapas (stan is an old persian suffix for a place or country) and, tapastan (but not with p[պ], but p’[փ], like in paris) means desert.


Avatar @{ Կողմնակի Անցանց Մ․ ; norayr@spyurk.am} 01.09.2020, 18:04:44

c9377dc0ce8901389033342e993310ef

արդէն գրել էի այս սալիկների մասին։

ահա, հարցրի ո՞րտեղից՝ ասին ծանօթ ա բերել ինչ֊որ գործարանից։

#յատակ #դիզայն #սալիկ


#tiles #tile #industrial #indusrial-design #industrial_design #design #interior #interior-design #interior_design #history #yerevan

բնօրինակ սփիւռքում(եւ մեկնաբանութիւննե՞ր)

i have showed these tiles back a couple of years ago. this time the tiles have been spotted at the remote village farm. i asked where they did get the tiles, and they answered that someone brought those from an old factory.

other places i spotted those - nissan service in yerevan - i guess they did not change anything, just use the old industrial building, and tapastan cafeteria on sarian street in yerevan.

btw, tapastan[տապաստան] is a wordplay - they refer to tapas, so it is a land of tapas (stan is an old persian suffix for a place or country) and, tapastan (but not with p[պ], but p’[փ], like in paris) means desert.


Avatar @{ Կողմնակի Անցանց Մ․ ; norayr@spyurk.am} 01.09.2020, 18:04:44

c9377dc0ce8901389033342e993310ef

արդէն գրել էի այս սալիկների մասին։

ահա, հարցրի ո՞րտեղից՝ ասին ծանօթ ա բերել ինչ֊որ գործարանից։

#յատակ #դիզայն #սալիկ


#tiles #tile #industrial #indusrial-design #industrial_design #design #interior #interior-design #interior_design #history #yerevan

բնօրինակ սփիւռքում(եւ մեկնաբանութիւննե՞ր)

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

բնօրինակ սփիւռքում(եւ մեկնաբանութիւննե՞ր)

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

բնօրինակ սփիւռքում(եւ մեկնաբանութիւննե՞ր)

these are old industrial tiles, now i have encountered on a remote village farm. i asked where they got those tiles, and they said - someone brought from the old factory.

tiles like that i also saw in nissan service centre in yerevan - they rent an old factory, first i saw the tiles at the “tapastan” cafeteria on sarian street. i’ll publish a photo from there too.


Avatar @{ Կողմնակի Անցանց Մ․ ; norayr@spyurk.am} 01.09.2020, 18:04:44

c9377dc0ce8901389033342e993310ef

արդէն գրել էի այս սալիկների մասին։

ահա, հարցրի ո՞րտեղից՝ ասին ծանօթ ա բերել ինչ֊որ գործարանից։

#յատակ #դիզայն #սալիկ


#tiles #tile #industrial-design #industrial_design #design #yerevan

բնօրինակ սփիւռքում(եւ մեկնաբանութիւննե՞ր)

these are old industrial tiles, now i have encountered on a remote village farm. i asked where they got those tiles, and they said - someone brought from the old factory.

tiles like that i also saw in nissan service centre in yerevan - they rent an old factory, first i saw the tiles at the “tapastan” cafeteria on sarian street. i’ll publish a photo from there too.


Avatar @{ Կողմնակի Անցանց Մ․ ; norayr@spyurk.am} 01.09.2020, 18:04:44

c9377dc0ce8901389033342e993310ef

արդէն գրել էի այս սալիկների մասին։

ահա, հարցրի ո՞րտեղից՝ ասին ծանօթ ա բերել ինչ֊որ գործարանից։

#յատակ #դիզայն #սալիկ


#tiles #tile #industrial-design #industrial_design #design #yerevan

բնօրինակ սփիւռքում(եւ մեկնաբանութիւննե՞ր)

first they have had dismantled the asbestos roof, now only the walls remained. and we can see how the walls were painted.


Avatar @{ Կողմնակի Անցանց Մ․ ; norayr@spyurk.am} 01.09.2020, 17:39:30

791ba060ce86013886b9342e993310ef

էս տունը քանդել են ու ներկած պատն երեւում ա։ի դէպ քանդելիս հնդիկներ էին աշխատում՝ մեր փայ միգրանտները։

#շէնք #պատ #դիզայն


#building #wall #design

բնօրինակ սփիւռքում(եւ մեկնաբանութիւննե՞ր)