javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

PHP之上的新语言?

我是PHP开发人员。 我喜欢PHP! 如果您知道如何使用它,这是一种非常好的语言,但是我知道有时它会允许非常糟糕的设计。

它使我想起JavaScript的好坏。 一个特定的项目,CoffeeScript,试图只专注于好的部分,迫使您编写好的代码。

我在想,如果用PHP可以完成类似的事情……一种新的语法只能编译为良好的PHP代码,以充分利用PHP 5.3带来的所有新颖有趣的内容。

因此,领先于某些人,我会问:如果您只能使用Ruby或Python或其他东西,为什么还要在PHP之上创建一种新语言?

  • PHP易于部署到任何地方
  • 语言本身具有很多好的功能和思想
  • 有很多用PHP编写的优秀库
  • ...

所以,我真正的问题是...

  • 这是一个愚蠢的主意吗? 为什么会这样呢? 您认为CoffeeScript是愚蠢的吗?
  • 某人如何开始在另一种语言之上创建新的语言? 我对此一无所知,但我想学习。 从哪儿开始?
trans by 2020-01-18T14:48:59Z

语言设计-为什么C#成员名称不能与封闭类型名称相同?

在C#中,以下代码无法编译:

class Foo {

    public string Foo;

}

问题是:为什么?

更确切地说,我知道这不会编译,因为(我引用):

成员名称不能与它们的封闭类型相同

好的。 我知道,我保证不会再做。

但是我真的不明白为什么编译器拒绝接受任何与封闭类型同名的字段。 阻止我这样做的潜在问题是什么?

trans by 2020-01-14T15:34:16Z

java-用'super'关键字绑定泛型

为什么我只能将Collection与通配符一起使用,而不能将其与类型参数一起使用?

例如,在Collection界面中,为什么toArray方法没有这样写

interface Collection<T>{
    <S super T> S[] toArray(S[] a);
}
trans by 2020-01-11T12:54:42Z

Scala(和Java)中的类和类型之间有什么区别?

斯卡拉

在Scala中,哪里可以看到类和类型之间的差异?为什么这种区别很重要?

在编程Scala时,它只是从语言设计的角度考虑还是具有“实际”影响?

还是“确保类型系统的边界”至关重要(我想到的是NothingNull)?

爪哇

在Java中还可以识别出上面提到的许多注意事项/差异/问题?


(有关语言的介绍,请参见Type和Class有什么区别?)

trans by 2020-01-05T21:06:56Z

为什么C#中没有|| =或&& =运算符?

对于所有逻辑运算符,Shift运算符,加法运算符和所有乘法运算符,我们都有等效的赋值运算符。

为什么逻辑运算符被排除在外?是否有困难的良好技术原因?

trans by 2019-11-19T00:56:11Z

数组为什么不是泛型?

public partial class Array: Array<object> { 声明为:

public abstract class Array
    : ICloneable, IList, ICollection, IEnumerable {

我想知道为什么不是这样:

public partial class Array<T>
    : ICloneable, IList<T>, ICollection<T>, IEnumerable<T> {
  1. 如果将其声明为泛型类型会出现什么问题?

  2. 如果它是通用类型,我们是否仍需要非通用类型,还是可以从public partial class Array: Array<object> { 派生? 如

    public partial class Array: Array<object> { 
    
trans by 2019-11-13T06:19:17Z

linq-为什么不支持C#静态类扩展方法?

从这个问题中我知道扩展方法只能在类实例上运行,而不能在静态类本身上运行。 这意味着我无法扩展有用的静态类,例如ForEach<T>IEnumerable<T>

我想知道的是,为什么会这样呢? 在上面的链接中,对C#团队如何实现这种功能提出了一些建议。 有什么哲学原因为什么不支持它?

例如,这是为什么IEnumerable<T>没有内置LINQ ForEach<T>扩展的原因所在。

trans by 2019-11-13T04:41:03Z

java-即使赋值是try中的最后一个操作,也可以在catch中重新赋值最终变量吗?

我很相信这里

final int i;
try { i = calculateIndex(); }
catch (Exception e) { i = 1; }

如果控制到达捕获块,则可能尚未分配i。 但是,Java编译器不同意并要求i

我在这里仍然缺少一些微妙之处,还是这仅仅是Java语言规范用来识别潜在重新分配的模型的弱点? 我主要担心的是i这样的事情,它可能导致异常抛出“异常”,但是我仍然看不到分配后如何抛出异常,这显然是try-中的最后一个动作- 块。

如果允许,上述成语会使我的许多方法变得更简单。 请注意,该用例在诸如Scala之类的语言中具有一流的支持,这些语言始终采用Maybe monad:

final int i = calculateIndex().getOrElse(1);

我认为此用例是一个很好的动机,可以允许在catch块中绝对未分配i的一种特殊情况。

UPDATE

经过一番思考,我甚至可以确定这只是JLS模型的弱点:如果我声明公理“在所举示例中,当控制权到达catch-block时,肯定没有分配i”,它将不会与其他任何冲突 公理或定理。 在将其分配给catch块之前,编译器不允许读取261069106988921717537,因此无法观察是否已分配i

trans by 2019-11-12T08:24:21Z

语言设计-为什么F#中的幂运算符仅适用于浮点数?

我从未见过一种语言具有指数或幂运算符,仅取浮点数?

例如:

2 ** 2引发错误The type 'int' does not support any operators named 'Pow'

此设计决定是否有正当理由?

trans by 2019-11-09T09:26:05Z

继承-为什么我不能从C ++的int继承?

我很希望能够做到这一点:

class myInt : public int
{

};

我为什么不能

我为什么要 更强的打字。 例如,我可以定义两个类+-,这两个类让我可以执行intA + intAintB + intB,但不能执行intA + intB

“整数不是阶级。” 所以呢?

“整数没有任何成员数据。” 是的,他们有,它们有32位或其他。

“ Int没有任何成员函数。” 好吧,他们有很多运营商,例如+-

trans by 2019-10-28T16:16:33Z

Lua是否主要基于完善的编程语言思想?

Lua在可以嵌入的语言空间中占据了一个很好的位置。 Lua设计新思想背后的主要思想是从实现者那里获得的,还是Lua主要是成熟思想的良好执行组合?

Lua与其他PL的特性和特征比较特别合适。

trans by 2019-10-04T11:09:03Z

Java编译器中“ let表达式”(LetExpr)的目的?

Java编译器似乎支持com.sun.tools.javac.tree.*中的javac表达式(请查看LetExpr)。

JCTree中的一条评论甚至提到了一些语法

(let int x = 3; in x+2)

当然,哪种语言不会被该语言的语法接受,而在较早的编译器阶段就被拒绝。

我想知道这个构造的起源,这是我以前从未见过的。

是由javac内部使用还是由其他工具合成? 难道这仅仅是Java早期的一种人工语言中从未有过的亮点的产物?

今天有什么可以做的有用的事情吗?

一般来说,为什么存在?

trans by 2019-09-26T21:47:49Z

语言设计 - 为什么C ++中没有基类?

快速问题:从设计的角度来看,为什么在C ++中,没有母语所有的基类,在其他语言中通常是object

trans by 2019-09-16T22:20:02Z

java - 为什么我们需要中断case语句?

为什么编译器不会在交换机中的每个代码块之后自动放置break语句? 这是出于历史原因吗? 您何时需要执行多个代码块?

trans by 2019-09-10T21:34:45Z

语言设计 - Haskell的严格要点是什么?

我们都知道(或应该知道)Haskell默认是懒惰的。 在必须对其进行评估之前,不评估任何内容。 那么什么时候必须评估一下? Haskell必须严格要点。 我将这些称为“严格点”,尽管这个术语并不像我想象的那么广泛。 据我说:

Haskell中的减少(或评估)仅发生在严格点处。

所以问题是:Haskell的严格要点究竟是什么? 我的直觉说seq,deepseq / bang模式,模式匹配以及通过main执行的任何main是主要的严格点,但我不知道为什么我知道这一点。

(另外,如果他们不被称为“严格点”,他们叫什么?)

我想一个好的答案将包括一些关于WHNF等的讨论。 我也想象它可能触及lambda演算。


编辑:关于这个问题的其他想法。

正如我在这个问题上的反思,我认为在严格点的定义中添加一些东西会更清楚。 严格点可以具有不同的上下文和不同的深度(或严格性)。 回到我的定义“Haskell的减少只发生在严格点”,让我们在这个定义中添加这个子句:“只有在评估或减少其周围环境时才会触发严格点。”

所以,让我试着让你开始我想要的那种答案。 seq是一个严格的观点。 它被特别指定为其上下文的主要严格点:程序。 当评估程序(deepseq的上下文)时,激活main的严格点。 主要深度是最大的:必须进行全面评估。 Main通常由IO操作组成,也是严格点,其上下文为main

现在你尝试:讨论seq和这些术语中的模式匹配。 解释功能应用的细微差别:它是如何严格的? 怎么回事? deepseq怎么样? letcase的陈述?unsafePerformIODebug.Trace? 顶级定义? 严格的数据类型? 邦模式? 等等。这些项目中有多少只能用seq或模式匹配来描述?

trans by 2019-09-08T15:38:35Z

语言设计 - 使用单个null参数调用Java varargs方法?

如果我有一个vararg Java方法foo并且我打电话给foo.length == 1 && foo[0] == null,我有truearg[1]作为nulls。 但如果我拨打foo(null),arg本身为空。 为什么会这样?

我该怎么拨打foo这样foo.length == 1 && foo[0] == nulltrue

trans by 2019-09-03T01:36:04Z

selector - 为什么Objective-C方法名称的最后一部分必须带参数(当有多个部分时)?

在Objective-C中,您不能声明最后一个组件不参数的方法名称。 例如,以下是非法的。

-(void)take:(id)theMoney andRun;
-(void)take:(id)yourMedicine andDontComplain;

为什么Objective-C是这样设计的? 它只是Smalltalk的神器,没有人看到需要摆脱?

这种限制在Smalltalk中是有意义的,因为Smalltalk没有围绕消息调用的分隔符,因此最终组件将被解释为到最后一个参数的一元消息。 例如,-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication*)theApplication将被解析为take:andRun.这在Objective-C中并不重要,其中需要使用方括号。

支持无参数选择器组件在测量语言的所有常用方法中都不会获得太多,因为程序员选择的方法名称(例如-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication*)theApplication而不是take:andRun)不会影响程序的功能语义,也不会影响程序的功能语义。语言的表现力。实际上,具有无参数组件的程序与没有参数的组件相当。因此我对答案没有兴趣,说明这样的特征是不必要的(除非那是Objective-C设计师的陈述理由;有没有人碰巧知道Brad Cox或Tom Love?他们在这里吗? )或者说如何编写方法名称,因此不需要该功能。主要的好处是可读性和可写性(这就像可读性,只有......你知道),因为这意味着你可以编写更接近自然语言句子的方法名称。喜欢-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication*)theApplication(Matt Gallagher指出&#34; Cocoa With Love&#34;在删除形式参数时有点令人困惑)可以命名为-(BOOL)application:(NSApplication*)theApplication shouldTerminateAfterLastWindowClosed,因此将参数紧邻相应的名词。

Apple的Objective-C运行时(例如)完全能够处理这些选择器,那么编译器为什么不呢? 为什么不在方法名称中支持它们呢?

#import <Foundation/Foundation.h>
#import <objc/runtime.h>

@interface Potrzebie : NSObject
-(void)take:(id)thing;
@end

@implementation Potrzebie
+(void)initialize {
    SEL take_andRun = NSSelectorFromString(@"take:andRun");
    IMP take_ = class_getMethodImplementation(self, @selector(take:));
    if (take_) {
        if (NO == class_addMethod(self, take_andRun, take_, "@@:@")) {
            NSLog(@"Couldn't add selector '%@' to class %s.", 
                  NSStringFromSelector(take_andRun), 
                  class_getName(self));
        }
    } else {
        NSLog(@"Couldn't find method 'take:'.");
    }
}

-(void)take:(id)thing {
    NSLog(@"-take: (actually %@) %@",NSStringFromSelector(_cmd), thing);
}
@end

int main() {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    Potrzebie *axolotl=[[Potrzebie alloc] init];
    [axolotl take:@"paradichloroaminobenzaldehyde"];
    [axolotl performSelector:NSSelectorFromString(@"take:andRun") 
                  withObject:@"$100"];
    [axolotl release];

    [pool release];
    return 0;
}
trans by 2019-08-23T14:44:44Z

JavaScript之外的任何其他语言在大括号开始位置(同一行和下一行)之间是否有区别?

今天,当我随机阅读O&#39; Reilly书中的JavaScript模式时,我发现了一件有趣的事情(第27页供参考)。

在Javascript中,在某些情况下,如果大括号的起始位置不同,则会有所不同。

function test_function1() {
    return
    {
        name: 'rajat'
    };
}

var obj = test_function1();
alert(obj);  //Shows "undefined"

function test_function2() {
    return {
        name: 'rajat'
    };
}

var obj = test_function2();
alert(obj); //Shows object

JSfiddle演示

有没有其他语言有这种行为? 如果是这样,那么我肯定要改变我的习惯.. :)

我主要关注PHP,C,C ++,Java和ruby。

trans by 2019-08-19T16:11:09Z

R在python中有一个断言语句吗?

一个声明,检查某些内容是否为真,如果没有则打印给定的错误消息并退出

trans by 2019-08-13T05:54:47Z

语言设计 - R中的因素:不仅仅是烦恼?

R中的一种基本数据类型是因子。 根据我的经验,因素基本上是一种痛苦,我从不使用它们。 我总是转换为角色。 我觉得很奇怪,因为我错过了一些东西。

是否有一些重要的函数示例使用因子作为分组变量,其中因子数据类型变得必要? 我应该使用哪些因素?

trans by 2019-08-12T12:46:34Z

1 2 3 下一页 共3页