Propocision de Retos... Matando el tiempo.

Iniciado por BlackZeroX, 18 Septiembre 2011, 03:21 AM

0 Miembros y 3 Visitantes están viendo este tema.

BlackZeroX

.
El tema es proponer retos discutir su dificultad y por ende sacar a flote dicho tema respectivamente en un hilo ajeno a este, ya que proponer un reto la vdd no es cosa facil, por ejemplo:

Proponer crear una aplicacion X discutiendo su complejidad.
Proponer la recreacion de la funcion X.
Proponer la creacion de alguna indole X.

Que debera llevar ...?
Que se espera de ...?
Prototipo de la funcion ...?

Por ejemplo: tengo en mente proponer un 3 retos los cuales son:

Crear un interprete...
Crear un lector de estructuras en arbol (como XML, HTTP, etc)...
Otro que no por el momento.

Puedo decir que el interprete tiene una dificultad Intermedio-Avanzado y el lector de estructuras en arbol seria un nivel Intermedio, pero por el momento SUPONGAMOS que en el interprete digo que haga X cosas... pero me lleguen a faltar mas cosillas; es decir discutir SOLAMENTE lo que debe esperarse de este mas que codigo deberia llevar Por ejemplo:

* Manejo de procesos y funciones.
* Manejo de variables con sus tipos X (Dim nombre as tipo).
* Con que tipos de variables debe contar.
* Funciones predeterminadas del interprete (Mid, Left, IndexOf, ...).
* Instrucciones de flujo (If then, select case o Switch, ...).
* Bucles (dow while, for(), ...).
* forma de retornar los valores (por la instruccion return o como lo hace vb6).
* Entre otras cosillas.
* Ademas de incluir ejemplos.

Este ultimo me es interesante puesto que se podrian crear entre 2 o mas personas claro que tambien 1 podria hacerlo, ademas de que fomentaria el compañerismo del foro.

Esta es una propocision.

Cada Post para no hacerlo lago deberia llevar una cita de link mas no citar completamente el tema esto ultimo para mantener un orden en el tema hilo.

Dulces Lunas!¡.
The Dark Shadow is my passion.

BlackZeroX

#1
.
Mi propuesta principal es el Interprete pero la vdd no se si les sea factible debida a su complejidad... claro esta que solo sera para matar el tiempo y pasar el rato, y como ya dige contendria:

* Manejo de procesos y funciones.
* Manejo de variables con sus tipos X (porejemplo Dim nombre as tipo, o tipo nombre variable = constructor, ...).
* Con que tipos de variables debe contar.
* Funciones predeterminadas del interprete (Mid, Left, IndexOf, ...).
* Instrucciones de flujo (If then, select case o Switch, ...).
* Bucles (do while, for(), ...).
* forma de retornar los valores (por la instruccion return o como lo hace vb6).
* Entre otras cosillas.
* Ademas de incluir ejemplos.

Enseguida expando cada tema ya que no es facil...

Dulces Lunas!¡.
The Dark Shadow is my passion.

x64core

a mi me interesa el tema y eso del interprete no lo entiendo muy bien :P
hay crear programar funciones para cada una de las peticiones que propones y unirlas?

BlackZeroX

#3
.
El interprete seria como crear un lenguaje como javascript, VBS, etc... claro se podrian crear retos por partes, pero me queda clarisimo que para crear un interprete por mas de 1 se debe llevar un seguimiento ordenado y planificado... sin contar el tiempo... etc, este reto del interprete seria como para 1 mes o mas, claro que se podria crear por partes... por ejemplo:

[Reto] Interprete if then, select case/Switch, ...:

* Donde por medio de un textbox se ponga el lenguaje y en un boton ejecute el codigo, obligamente sin interpretacion de variables (Que no se manejen variables)... es decir el if then, select case/switch, ...  sus funcionalidades basicas.

por ejemplo en un textbox que se pegue:


if 454 > 45 then
   msgbox "hola"
else if 41 = 41 then
   msgbox "adios"
else
   msgbox "error"
end if


Obviamente el interprete llamaria a msgbox de vb6, ya que solo se deberia programar un interprete de if then, posteriormente se al tener varios codigos se podria armar o unir... espero haberme explicado.

Sin usar algun ocx. o algo que ya haga el trabajo como vbs o javascript...

Es un poco LOCA esta propuesta y me la andaba pensando puesto que se debe planificar bien...

Dulces Lunas!¡.
The Dark Shadow is my passion.

raul338

Cita de: BlackZeroX▓▓▒▒░░ en 18 Septiembre 2011, 03:24 AMclaro esta que solo sera para matar el tiempo y pasar el rato
Lo malo es los que no tienen mucho tiempo (como yo :xD). Es un proyecto que ademas de ser intermedio, es mediano/grande y ademas necesita su tiempo de reflexion. Y proponer un reto para que salgan 4 o 5 interpretes, no lo veo productivo :xD

Lo mejor seria armar un proyecto open source y el que quiera unirse que entre y haga sus modificaciones al codigo y despues el que maneje el proyecto decida si lo une o no :P(con github)

BlackZeroX

Cita de: raul338 en 18 Septiembre 2011, 04:07 AM
Lo malo es los que no tienen mucho tiempo (como yo :xD). Es un proyecto que ademas de ser intermedio, es mediano/grande y ademas necesita su tiempo de reflexion. Y proponer un reto para que salgan 4 o 5 interpretes, no lo veo productivo :xD

La idea no es crear un interprete en si como vbs... si no crear retos pequeños que no tienen fin de crear ni unirse a uno grande como ejemplo el del if then seria algo asi (Lo hice de una manera muy cutre y rapida):



Option Explicit

Private Sub Form_Load()
Const CODIGO As String = "if (-1 < 1)) {" & vbCrLf & "msgbox hola" & vbCrLf & "}"
    MsgBox CBool(validateCondition(itsIF(getLine(CODIGO, 0))))
End Sub

Public Static Function TextBetweenWords$(ByRef sText$, ByVal sWord1$, ByVal sWord2$)
Dim lPos1&, lPos2&, lStart&
    If LenB(sText) Then
        lPos1 = InStrB(1, sText, sWord1, vbBinaryCompare)
        If lPos1 Then
            lStart = lPos1 + LenB(sWord1)
            lPos2 = InStrB(lStart, sText, sWord2, vbBinaryCompare)
            If lPos2 Then TextBetweenWords = MidB$(sText, lStart, lPos2 - lStart)
        End If
    End If
End Function

Public Function getLine(ByRef sStr As String, ByVal lLine As Long) As String
Dim sVar()      As String
    sVar = Split(sStr, vbCrLf)
    If (UBound(sVar) < lLine) Then
        getLine = sVar(UBound(sVar))
    Else
        getLine = sVar(lLine)
    End If
End Function

Public Function itsIF(ByVal sLine As String) As String
Dim i As Long
    For i = 1 To Len(sLine)
        If (LCase$(MidB$(sLine, i, 4)) = "if") Then
            itsIF = TextBetweenWords$(sLine, "(", ")")
            Exit Function
        End If
    Next
End Function

Public Function validateCondition(ByRef sCondition As String) As Long
Dim sStr As String
Dim lIndex As Long
   
    sStr = TextBetweenWords$(sCondition, "(", ")")
    Do Until (sStr = vbNullString)
        sStr = TextBetweenWords$(sCondition, "(", ")")
        If Not (sStr = vbNullString) Then
            sCondition = Replace$(sCondition, "(" & sStr & ")", validateCondition(sStr), 1, 1, vbTextCompare)
        End If
    Loop
   
    sCondition = Trim$(sCondition)
    lIndex = InStr(1, sCondition, "=", vbTextCompare)
    If lIndex > 0 Then
        validateCondition = Trim$(MidB$(sCondition, 1, (lIndex - 1) * 2)) = Trim$(MidB$(sCondition, (lIndex * 2) + 3))
        Exit Function
    End If
   
    lIndex = InStr(1, sCondition, ">", vbTextCompare)
    If lIndex > 0 Then
        validateCondition = MidB$(sCondition, 1, lIndex) > Trim$(MidB$(sCondition, lIndex + 1))
        Exit Function
    End If
   
    lIndex = InStr(1, sCondition, "<", vbTextCompare)
    If lIndex > 0 Then
        validateCondition = MidB$(sCondition, 1, lIndex) < Trim$(MidB$(sCondition, lIndex + 1))
        Exit Function
    End If
   
    ' //  ...
End Function



Dulces Lunas!¡.
The Dark Shadow is my passion.

x64core

#6
esta interesante y si es un project medio grande :P
y como dices BlackZeroX me parece que se vayan poniendo como retos yo en el proximo que se publique si participare, en los ultimos que se han publicado siempre me animo al principio pero al final me frustro :xD pero en este que viene si participare  >:D

bueno y tambien hay poca gente que participa en los retos :P
bueno una parte es porque no todos se conectan la misma semana o los diaz de los retos :P pero en general unos 4 o 5 :P

Psyke1

Ui, algo pasa aquí... ¿BlackZeroX llevando proyectos a cabo? :laugh: ;)
Ya tenías pensada la idea y me la dijiste hace ya casi un año, pero no la llevamos a cabo por falta de tiempo y demás factores...
Bueno, no hace falta que diga que tienes todo mi apoyo y colaboración en lo que pueda ayudar. :-*
Por cierto:
¿No decías que había que hacer clases recursivas para ello? ¿Habrá miles de retos hasta conseguir parsear las funciones de vb?
¿Me estoy haciendo un lío? :xD

DoEvents! :P

carepapa

yo voy a empezar a hacer un intérprete, lo malo esque no consigo mucha información. Es un proyecto para este final de semestre, en lo que vaya avanzando les ire comentando. La idea es que me haga las operaciones básicas, declaracion de variables, etc. Algo como asi:
vive
usar a,b;
asignar b valor 5;
meta a; // Leer a
sumar b,a;
saque b; // imprime b
muere